diff --git a/lab-68/lab-68-demo01-authorization-code/pom.xml b/lab-68/lab-68-demo01-authorization-code-server/pom.xml similarity index 100% rename from lab-68/lab-68-demo01-authorization-code/pom.xml rename to lab-68/lab-68-demo01-authorization-code-server/pom.xml diff --git a/lab-68/lab-68-demo01-authorization-code/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/ResourceServerApplication.java b/lab-68/lab-68-demo01-authorization-code-server/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/ResourceServerApplication.java similarity index 100% rename from lab-68/lab-68-demo01-authorization-code/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/ResourceServerApplication.java rename to lab-68/lab-68-demo01-authorization-code-server/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/ResourceServerApplication.java diff --git a/lab-68/lab-68-demo01-authorization-code/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/config/OAuth2AuthorizationServerConfig.java b/lab-68/lab-68-demo01-authorization-code-server/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/config/OAuth2AuthorizationServerConfig.java similarity index 100% rename from lab-68/lab-68-demo01-authorization-code/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/config/OAuth2AuthorizationServerConfig.java rename to lab-68/lab-68-demo01-authorization-code-server/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/config/OAuth2AuthorizationServerConfig.java diff --git a/lab-68/lab-68-demo01-authorization-code/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/config/OAuth2ResourceServerConfig.java b/lab-68/lab-68-demo01-authorization-code-server/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/config/OAuth2ResourceServerConfig.java similarity index 100% rename from lab-68/lab-68-demo01-authorization-code/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/config/OAuth2ResourceServerConfig.java rename to lab-68/lab-68-demo01-authorization-code-server/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/config/OAuth2ResourceServerConfig.java diff --git a/lab-68/lab-68-demo01-authorization-code/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/config/SecurityConfig.java b/lab-68/lab-68-demo01-authorization-code-server/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/config/SecurityConfig.java similarity index 100% rename from lab-68/lab-68-demo01-authorization-code/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/config/SecurityConfig.java rename to lab-68/lab-68-demo01-authorization-code-server/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/config/SecurityConfig.java diff --git a/lab-68/lab-68-demo01-authorization-code/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/controller/ExampleController.java b/lab-68/lab-68-demo01-authorization-code-server/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/controller/ExampleController.java similarity index 100% rename from lab-68/lab-68-demo01-authorization-code/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/controller/ExampleController.java rename to lab-68/lab-68-demo01-authorization-code-server/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/controller/ExampleController.java diff --git a/lab-68/lab-68-demo01-client-credentials-server/pom.xml b/lab-68/lab-68-demo01-client-credentials-server/pom.xml new file mode 100644 index 00000000..83e7f05a --- /dev/null +++ b/lab-68/lab-68-demo01-client-credentials-server/pom.xml @@ -0,0 +1,55 @@ + + + + lab-68 + cn.iocoder.springboot.labs + 1.0-SNAPSHOT + + 4.0.0 + + lab-68-demo01-client-credentials-server + + + + 2.2.4.RELEASE + + 1.8 + 1.8 + + + + + + org.springframework.boot + spring-boot-starter-parent + ${spring.boot.version} + pom + import + + + + + + + + org.springframework.boot + spring-boot-starter-web + + + + + + + + + + + org.springframework.security.oauth.boot + spring-security-oauth2-autoconfigure + ${spring.boot.version} + + + + diff --git a/lab-68/lab-68-demo01-implicit/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/ResourceServerApplication.java b/lab-68/lab-68-demo01-client-credentials-server/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/ResourceServerApplication.java similarity index 100% rename from lab-68/lab-68-demo01-implicit/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/ResourceServerApplication.java rename to lab-68/lab-68-demo01-client-credentials-server/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/ResourceServerApplication.java diff --git a/lab-68/lab-68-demo01-client-credentials-server/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/config/OAuth2AuthorizationServerConfig.java b/lab-68/lab-68-demo01-client-credentials-server/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/config/OAuth2AuthorizationServerConfig.java new file mode 100644 index 00000000..426bf756 --- /dev/null +++ b/lab-68/lab-68-demo01-client-credentials-server/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/config/OAuth2AuthorizationServerConfig.java @@ -0,0 +1,32 @@ +package cn.iocoder.springboot.lab68.resourceserverdemo.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.crypto.password.NoOpPasswordEncoder; +import org.springframework.security.oauth2.config.annotation.configurers.ClientDetailsServiceConfigurer; +import org.springframework.security.oauth2.config.annotation.web.configuration.AuthorizationServerConfigurerAdapter; +import org.springframework.security.oauth2.config.annotation.web.configuration.EnableAuthorizationServer; + +/** + * 授权服务器配置 + */ +@Configuration +@EnableAuthorizationServer +public class OAuth2AuthorizationServerConfig extends AuthorizationServerConfigurerAdapter { + + @Bean + public static NoOpPasswordEncoder passwordEncoder() { + return (NoOpPasswordEncoder) NoOpPasswordEncoder.getInstance(); + } + + @Override + public void configure(ClientDetailsServiceConfigurer clients) throws Exception { + clients.inMemory() + .withClient("clientapp").secret("112233") // Client 账号、密码。 + .authorizedGrantTypes("client_credentials") // 客户端模式 + .scopes("read_userinfo", "read_contacts") // 可授权的 Scope +// .and().withClient() // 可以继续配置新的 Client + ; + } + +} diff --git a/lab-68/lab-68-demo01-implicit/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/config/OAuth2ResourceServerConfig.java b/lab-68/lab-68-demo01-client-credentials-server/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/config/OAuth2ResourceServerConfig.java similarity index 100% rename from lab-68/lab-68-demo01-implicit/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/config/OAuth2ResourceServerConfig.java rename to lab-68/lab-68-demo01-client-credentials-server/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/config/OAuth2ResourceServerConfig.java diff --git a/lab-68/lab-68-demo01-implicit/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/controller/ExampleController.java b/lab-68/lab-68-demo01-client-credentials-server/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/controller/ExampleController.java similarity index 100% rename from lab-68/lab-68-demo01-implicit/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/controller/ExampleController.java rename to lab-68/lab-68-demo01-client-credentials-server/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/controller/ExampleController.java diff --git a/lab-68/lab-68-demo01-implicit/pom.xml b/lab-68/lab-68-demo01-implicit-server/pom.xml similarity index 97% rename from lab-68/lab-68-demo01-implicit/pom.xml rename to lab-68/lab-68-demo01-implicit-server/pom.xml index 280621bb..ac455c9c 100644 --- a/lab-68/lab-68-demo01-implicit/pom.xml +++ b/lab-68/lab-68-demo01-implicit-server/pom.xml @@ -9,7 +9,7 @@ 4.0.0 - lab-68-demo01-implicit + lab-68-demo01-implicit-server diff --git a/lab-68/lab-68-demo01-implicit-server/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/ResourceServerApplication.java b/lab-68/lab-68-demo01-implicit-server/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/ResourceServerApplication.java new file mode 100644 index 00000000..630affa7 --- /dev/null +++ b/lab-68/lab-68-demo01-implicit-server/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/ResourceServerApplication.java @@ -0,0 +1,13 @@ +package cn.iocoder.springboot.lab68.resourceserverdemo; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class ResourceServerApplication { + + public static void main(String[] args) { + SpringApplication.run(ResourceServerApplication.class, args); + } + +} diff --git a/lab-68/lab-68-demo01-implicit/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/config/OAuth2AuthorizationServerConfig.java b/lab-68/lab-68-demo01-implicit-server/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/config/OAuth2AuthorizationServerConfig.java similarity index 100% rename from lab-68/lab-68-demo01-implicit/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/config/OAuth2AuthorizationServerConfig.java rename to lab-68/lab-68-demo01-implicit-server/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/config/OAuth2AuthorizationServerConfig.java diff --git a/lab-68/lab-68-demo01-implicit-server/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/config/OAuth2ResourceServerConfig.java b/lab-68/lab-68-demo01-implicit-server/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/config/OAuth2ResourceServerConfig.java new file mode 100644 index 00000000..d877589a --- /dev/null +++ b/lab-68/lab-68-demo01-implicit-server/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/config/OAuth2ResourceServerConfig.java @@ -0,0 +1,26 @@ +package cn.iocoder.springboot.lab68.resourceserverdemo.config; + +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer; +import org.springframework.security.oauth2.config.annotation.web.configuration.ResourceServerConfigurerAdapter; + +/** + * 资源服务器配置 + */ +@Configuration +@EnableResourceServer +public class OAuth2ResourceServerConfig extends ResourceServerConfigurerAdapter { + + @Override + public void configure(HttpSecurity http) throws Exception { + http.authorizeRequests() + .anyRequest().authenticated() + // 设置 /api/ 开头的 URL 需要保护 + .and().requestMatchers().antMatchers("/api/**"); + } + +} + +// 实际,OAuth2ResourceServer 不是和 OAuth2AuthorizationServer 一起。 +// 主要考虑,简化 demo ,所以改成这样。 diff --git a/lab-68/lab-68-demo01-implicit/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/config/SecurityConfig.java b/lab-68/lab-68-demo01-implicit-server/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/config/SecurityConfig.java similarity index 100% rename from lab-68/lab-68-demo01-implicit/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/config/SecurityConfig.java rename to lab-68/lab-68-demo01-implicit-server/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/config/SecurityConfig.java diff --git a/lab-68/lab-68-demo01-implicit-server/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/controller/ExampleController.java b/lab-68/lab-68-demo01-implicit-server/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/controller/ExampleController.java new file mode 100644 index 00000000..2114a466 --- /dev/null +++ b/lab-68/lab-68-demo01-implicit-server/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/controller/ExampleController.java @@ -0,0 +1,18 @@ +package cn.iocoder.springboot.lab68.resourceserverdemo.controller; + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * 示例模块 Controller + */ +@RestController +@RequestMapping("/api/example") +public class ExampleController { + + @RequestMapping("/hello") + public String hello() { + return "world"; + } + +} diff --git a/lab-68/lab-68-demo02-authorization-server-with-client-credentials/src/main/java/cn/iocoder/springboot/lab68/authorizationserverdemo/config/OAuth2AuthorizationServerConfig.java b/lab-68/lab-68-demo02-authorization-server-with-client-credentials/src/main/java/cn/iocoder/springboot/lab68/authorizationserverdemo/config/OAuth2AuthorizationServerConfig.java index 7a0dcebd..c09dcbca 100644 --- a/lab-68/lab-68-demo02-authorization-server-with-client-credentials/src/main/java/cn/iocoder/springboot/lab68/authorizationserverdemo/config/OAuth2AuthorizationServerConfig.java +++ b/lab-68/lab-68-demo02-authorization-server-with-client-credentials/src/main/java/cn/iocoder/springboot/lab68/authorizationserverdemo/config/OAuth2AuthorizationServerConfig.java @@ -15,17 +15,9 @@ import org.springframework.security.oauth2.config.annotation.web.configurers.Aut @EnableAuthorizationServer public class OAuth2AuthorizationServerConfig extends AuthorizationServerConfigurerAdapter { -// /** -// * 用户认证 Manager -// */ -// @Autowired -// private AuthenticationManager authenticationManager; -// -// @Override -// public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception { -// endpoints.authenticationManager(authenticationManager); -// } - + /** + * 创建 PasswordEncoder Bean + */ @Bean public static NoOpPasswordEncoder passwordEncoder() { return (NoOpPasswordEncoder) NoOpPasswordEncoder.getInstance(); diff --git a/lab-68/lab-68-demo02-authorization-server-with-client-credentials/src/main/java/cn/iocoder/springboot/lab68/authorizationserverdemo/config/SecurityConfig.java b/lab-68/lab-68-demo02-authorization-server-with-client-credentials/src/main/java/cn/iocoder/springboot/lab68/authorizationserverdemo/config/SecurityConfig.java deleted file mode 100644 index da9dcccc..00000000 --- a/lab-68/lab-68-demo02-authorization-server-with-client-credentials/src/main/java/cn/iocoder/springboot/lab68/authorizationserverdemo/config/SecurityConfig.java +++ /dev/null @@ -1,36 +0,0 @@ -package cn.iocoder.springboot.lab68.authorizationserverdemo.config; - -import org.springframework.context.annotation.Bean; -import org.springframework.security.authentication.AuthenticationManager; -import org.springframework.security.config.BeanIds; -import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; -import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; -import org.springframework.security.crypto.password.NoOpPasswordEncoder; - -//@Configuration -//@EnableWebSecurity -public class SecurityConfig extends WebSecurityConfigurerAdapter { - - @Override - @Bean(name = BeanIds.AUTHENTICATION_MANAGER) - public AuthenticationManager authenticationManagerBean() throws Exception { - return super.authenticationManagerBean(); - } - - @Bean - public static NoOpPasswordEncoder passwordEncoder() { - return (NoOpPasswordEncoder) NoOpPasswordEncoder.getInstance(); - } - - @Override - protected void configure(AuthenticationManagerBuilder auth) throws Exception { - auth. - // 使用内存中的 InMemoryUserDetailsManager - inMemoryAuthentication() - // 不使用 PasswordEncoder 密码编码器 - .passwordEncoder(passwordEncoder()) - // 配置 yunai 用户 - .withUser("yunai").password("1024").roles("USER"); - } - -} diff --git a/lab-68/pom.xml b/lab-68/pom.xml index 8733a1bf..cefd083f 100644 --- a/lab-68/pom.xml +++ b/lab-68/pom.xml @@ -13,8 +13,9 @@ pom lab-68-demo01-resource-owner-password-credentials-server - lab-68-demo01-authorization-code - lab-68-demo01-implicit + lab-68-demo01-authorization-code-server + lab-68-demo01-implicit-server + lab-68-demo01-client-credentials-server lab-68-demo02-resource-server lab-68-demo02-authorization-server-with-resource-owner-password-credentials