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