From eb854a4f24d184a613843a061c4bded15269ea29 Mon Sep 17 00:00:00 2001 From: mrbird Date: Wed, 26 Jun 2019 21:19:36 +0800 Subject: [PATCH] =?UTF-8?q?Spring=20Security=20OAuth2=E5=85=A5=E9=97=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 63.Spring-Security-OAuth2-Guide/pom.xml | 65 ++++++++++++++++++ .../mrbird/security/SecurityApplication.java | 13 ++++ .../config/AuthorizationServerConfig.java | 22 ++++++ .../security/config/ResourceServerConfig.java | 13 ++++ .../security/controller/UserController.java | 17 +++++ .../cc/mrbird/security/domain/MyUser.java | 67 +++++++++++++++++++ .../security/service/UserDetailService.java | 29 ++++++++ .../src/main/resources/application.yml | 6 ++ 8 files changed, 232 insertions(+) create mode 100644 63.Spring-Security-OAuth2-Guide/pom.xml create mode 100644 63.Spring-Security-OAuth2-Guide/src/main/java/cc/mrbird/security/SecurityApplication.java create mode 100644 63.Spring-Security-OAuth2-Guide/src/main/java/cc/mrbird/security/config/AuthorizationServerConfig.java create mode 100644 63.Spring-Security-OAuth2-Guide/src/main/java/cc/mrbird/security/config/ResourceServerConfig.java create mode 100644 63.Spring-Security-OAuth2-Guide/src/main/java/cc/mrbird/security/controller/UserController.java create mode 100644 63.Spring-Security-OAuth2-Guide/src/main/java/cc/mrbird/security/domain/MyUser.java create mode 100644 63.Spring-Security-OAuth2-Guide/src/main/java/cc/mrbird/security/service/UserDetailService.java create mode 100644 63.Spring-Security-OAuth2-Guide/src/main/resources/application.yml diff --git a/63.Spring-Security-OAuth2-Guide/pom.xml b/63.Spring-Security-OAuth2-Guide/pom.xml new file mode 100644 index 0000000..2c4994c --- /dev/null +++ b/63.Spring-Security-OAuth2-Guide/pom.xml @@ -0,0 +1,65 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 2.1.6.RELEASE + + + cc.mrbird + security + 0.0.1-SNAPSHOT + security + Demo project for Spring Boot + + + 1.8 + Greenwich.SR1 + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.cloud + spring-cloud-starter + + + org.springframework.cloud + spring-cloud-starter-oauth2 + + + org.springframework.cloud + spring-cloud-starter-security + + + org.apache.commons + commons-lang3 + + + + + + + org.springframework.cloud + spring-cloud-dependencies + ${spring-cloud.version} + pom + import + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + diff --git a/63.Spring-Security-OAuth2-Guide/src/main/java/cc/mrbird/security/SecurityApplication.java b/63.Spring-Security-OAuth2-Guide/src/main/java/cc/mrbird/security/SecurityApplication.java new file mode 100644 index 0000000..bae4d89 --- /dev/null +++ b/63.Spring-Security-OAuth2-Guide/src/main/java/cc/mrbird/security/SecurityApplication.java @@ -0,0 +1,13 @@ +package cc.mrbird.security; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class SecurityApplication { + + public static void main(String[] args) { + SpringApplication.run(SecurityApplication.class, args); + } + +} diff --git a/63.Spring-Security-OAuth2-Guide/src/main/java/cc/mrbird/security/config/AuthorizationServerConfig.java b/63.Spring-Security-OAuth2-Guide/src/main/java/cc/mrbird/security/config/AuthorizationServerConfig.java new file mode 100644 index 0000000..8c5844c --- /dev/null +++ b/63.Spring-Security-OAuth2-Guide/src/main/java/cc/mrbird/security/config/AuthorizationServerConfig.java @@ -0,0 +1,22 @@ +package cc.mrbird.security.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.security.oauth2.config.annotation.web.configuration.EnableAuthorizationServer; + +/** + * @author MrBird + */ +@Configuration +@EnableAuthorizationServer +public class AuthorizationServerConfig extends WebSecurityConfigurerAdapter { + + @Bean + public PasswordEncoder passwordEncoder() { + return new BCryptPasswordEncoder(); + } + +} diff --git a/63.Spring-Security-OAuth2-Guide/src/main/java/cc/mrbird/security/config/ResourceServerConfig.java b/63.Spring-Security-OAuth2-Guide/src/main/java/cc/mrbird/security/config/ResourceServerConfig.java new file mode 100644 index 0000000..966b89d --- /dev/null +++ b/63.Spring-Security-OAuth2-Guide/src/main/java/cc/mrbird/security/config/ResourceServerConfig.java @@ -0,0 +1,13 @@ +package cc.mrbird.security.config; + +import org.springframework.context.annotation.Configuration; +import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer; + +/** + * @author MrBird + */ +@Configuration +@EnableResourceServer +public class ResourceServerConfig { + +} diff --git a/63.Spring-Security-OAuth2-Guide/src/main/java/cc/mrbird/security/controller/UserController.java b/63.Spring-Security-OAuth2-Guide/src/main/java/cc/mrbird/security/controller/UserController.java new file mode 100644 index 0000000..1eb2405 --- /dev/null +++ b/63.Spring-Security-OAuth2-Guide/src/main/java/cc/mrbird/security/controller/UserController.java @@ -0,0 +1,17 @@ +package cc.mrbird.security.controller; + +import org.springframework.security.core.Authentication; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @author MrBird + */ +@RestController +public class UserController { + + @GetMapping("index") + public Object index(Authentication authentication){ + return authentication; + } +} diff --git a/63.Spring-Security-OAuth2-Guide/src/main/java/cc/mrbird/security/domain/MyUser.java b/63.Spring-Security-OAuth2-Guide/src/main/java/cc/mrbird/security/domain/MyUser.java new file mode 100644 index 0000000..6c44f0a --- /dev/null +++ b/63.Spring-Security-OAuth2-Guide/src/main/java/cc/mrbird/security/domain/MyUser.java @@ -0,0 +1,67 @@ +package cc.mrbird.security.domain; + +import java.io.Serializable; + +public class MyUser implements Serializable { + private static final long serialVersionUID = 3497935890426858541L; + + private String userName; + + private String password; + + private boolean accountNonExpired = true; + + private boolean accountNonLocked= true; + + private boolean credentialsNonExpired= true; + + private boolean enabled= true; + + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public boolean isAccountNonExpired() { + return accountNonExpired; + } + + public void setAccountNonExpired(boolean accountNonExpired) { + this.accountNonExpired = accountNonExpired; + } + + public boolean isAccountNonLocked() { + return accountNonLocked; + } + + public void setAccountNonLocked(boolean accountNonLocked) { + this.accountNonLocked = accountNonLocked; + } + + public boolean isCredentialsNonExpired() { + return credentialsNonExpired; + } + + public void setCredentialsNonExpired(boolean credentialsNonExpired) { + this.credentialsNonExpired = credentialsNonExpired; + } + + public boolean isEnabled() { + return enabled; + } + + public void setEnabled(boolean enabled) { + this.enabled = enabled; + } +} diff --git a/63.Spring-Security-OAuth2-Guide/src/main/java/cc/mrbird/security/service/UserDetailService.java b/63.Spring-Security-OAuth2-Guide/src/main/java/cc/mrbird/security/service/UserDetailService.java new file mode 100644 index 0000000..8a55e5a --- /dev/null +++ b/63.Spring-Security-OAuth2-Guide/src/main/java/cc/mrbird/security/service/UserDetailService.java @@ -0,0 +1,29 @@ +package cc.mrbird.security.service; + +import cc.mrbird.security.domain.MyUser; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.core.authority.AuthorityUtils; +import org.springframework.security.core.userdetails.User; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.stereotype.Service; + +@Service +public class UserDetailService implements UserDetailsService { + + @Autowired + private PasswordEncoder passwordEncoder; + + @Override + public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { + MyUser user = new MyUser(); + user.setUserName(username); + user.setPassword(this.passwordEncoder.encode("123456")); + return new User(username, user.getPassword(), user.isEnabled(), + user.isAccountNonExpired(), user.isCredentialsNonExpired(), + user.isAccountNonLocked(), AuthorityUtils.commaSeparatedStringToAuthorityList("admin")); + } +} diff --git a/63.Spring-Security-OAuth2-Guide/src/main/resources/application.yml b/63.Spring-Security-OAuth2-Guide/src/main/resources/application.yml new file mode 100644 index 0000000..f5a8730 --- /dev/null +++ b/63.Spring-Security-OAuth2-Guide/src/main/resources/application.yml @@ -0,0 +1,6 @@ +security: + oauth2: + client: + client-id: test + client-secret: test1234 + registered-redirect-uri: http://mrbird.cc