Skip to content

Commit e7db7d2

Browse files
committed
feat: 将 public-client 替换为 pkce-client 并添加相关配置
将多个示例项目中的 public-client 替换为 pkce-client,并添加了 CLIENT_SECRET_BASIC 和 CLIENT_SECRET_POST 身份验证方法,以及 REFRESH_TOKEN 授权类型。同时增加了多个重定向 URI 和登出 重定向 URI 配置。更新了测试类以匹配新的客户端 ID,并修改了相关的逻辑以支持 pkce-client。
1 parent 293908b commit e7db7d2

File tree

17 files changed

+134
-53
lines changed

17 files changed

+134
-53
lines changed

my-samples/auth-server-01-start/src/main/java/com/chensoul/config/SecurityConfig.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -135,11 +135,18 @@ public RegisteredClientRepository registeredClientRepository() {
135135
.scope("client.read")
136136
.build();
137137

138-
RegisteredClient publicClient = RegisteredClient.withId(UUID.randomUUID().toString())
139-
.clientId("public-client")
138+
RegisteredClient pkceClient = RegisteredClient.withId(UUID.randomUUID().toString())
139+
.clientId("pkce-client")
140140
.clientAuthenticationMethod(ClientAuthenticationMethod.NONE)
141+
.clientAuthenticationMethod(ClientAuthenticationMethod.CLIENT_SECRET_BASIC)
142+
.clientAuthenticationMethod(ClientAuthenticationMethod.CLIENT_SECRET_POST)
141143
.authorizationGrantType(AuthorizationGrantType.AUTHORIZATION_CODE)
144+
.authorizationGrantType(AuthorizationGrantType.REFRESH_TOKEN)
142145
.redirectUri("http://127.0.0.1:4200")
146+
.redirectUri("https://oidcdebugger.com/debug")
147+
.redirectUri("https://oauthdebugger.com/debug")
148+
.redirectUri("http://127.0.0.1:8080/login/oauth2/code/pkce-client")
149+
.postLogoutRedirectUri("http://127.0.0.1:8080/")
143150
.scope(OidcScopes.OPENID)
144151
.scope(OidcScopes.PROFILE)
145152
.clientSettings(ClientSettings.builder()
@@ -160,7 +167,7 @@ public RegisteredClientRepository registeredClientRepository() {
160167
).build();
161168

162169
// @formatter:on
163-
return new InMemoryRegisteredClientRepository(oidcClient, credentialsClient, publicClient, opaqueClient);
170+
return new InMemoryRegisteredClientRepository(oidcClient, credentialsClient, pkceClient, opaqueClient);
164171
}
165172

166173
@Bean

my-samples/auth-server-01-start/src/main/resources/application.yml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,15 +36,19 @@ spring:
3636
- "read"
3737
- "write"
3838
require-authorization-consent: true
39-
public-client:
39+
pkce-client:
4040
registration:
41-
client-id: "public-client"
41+
client-id: "pkce-client"
4242
client-authentication-methods:
4343
- "none"
44+
- "client_secret_basic"
45+
- "client_secret_post"
4446
authorization-grant-types:
4547
- "authorization_code"
48+
- "refresh_token"
4649
redirect-uris:
4750
- "http://127.0.0.1:4200"
51+
- "http://127.0.0.1:8080/login/oauth2/code/pkce-client"
4852
scopes:
4953
- "openid"
5054
- "profile"

my-samples/auth-server-02-pkce/src/main/java/com/chensoul/config/SecurityConfig.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -111,11 +111,18 @@ public RegisteredClientRepository registeredClientRepository() {
111111
.scope("client.read")
112112
.build();
113113

114-
RegisteredClient publicClient = RegisteredClient.withId(UUID.randomUUID().toString())
115-
.clientId("public-client")
114+
RegisteredClient pkceClient = RegisteredClient.withId(UUID.randomUUID().toString())
115+
.clientId("pkce-client")
116116
.clientAuthenticationMethod(ClientAuthenticationMethod.NONE)
117+
.clientAuthenticationMethod(ClientAuthenticationMethod.CLIENT_SECRET_BASIC)
118+
.clientAuthenticationMethod(ClientAuthenticationMethod.CLIENT_SECRET_POST)
117119
.authorizationGrantType(AuthorizationGrantType.AUTHORIZATION_CODE)
120+
.authorizationGrantType(AuthorizationGrantType.REFRESH_TOKEN)
118121
.redirectUri("http://127.0.0.1:4200")
122+
.redirectUri("https://oidcdebugger.com/debug")
123+
.redirectUri("https://oauthdebugger.com/debug")
124+
.redirectUri("http://127.0.0.1:8080/login/oauth2/code/pkce-client")
125+
.postLogoutRedirectUri("http://127.0.0.1:8080/")
119126
.scope(OidcScopes.OPENID)
120127
.scope(OidcScopes.PROFILE)
121128
.clientSettings(ClientSettings.builder()
@@ -136,7 +143,7 @@ public RegisteredClientRepository registeredClientRepository() {
136143
).build();
137144

138145
// @formatter:on
139-
return new InMemoryRegisteredClientRepository(oidcClient, credentialsClient, publicClient, opaqueClient);
146+
return new InMemoryRegisteredClientRepository(oidcClient, credentialsClient, pkceClient, opaqueClient);
140147
}
141148

142149
@Bean

my-samples/auth-server-02-pkce/src/test/java/com/chensoul/PublicClientTests.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
* @author Steve Riesenberg
2727
*/
2828
@ExtendWith(SpringTestContextExtension.class)
29-
public class PublicClientTests {
29+
public class pkceClientTests {
3030
public final SpringTestContext spring = new SpringTestContext(this);
3131

3232
@Autowired
@@ -36,10 +36,10 @@ public class PublicClientTests {
3636
private RegisteredClientRepository registeredClientRepository;
3737

3838
@Test
39-
public void oidcLoginWhenPublicClientThenSuccess() throws Exception {
39+
public void oidcLoginWhenpkceClientThenSuccess() throws Exception {
4040
this.spring.register(AuthorizationServerConfig.class).autowire();
4141

42-
RegisteredClient registeredClient = this.registeredClientRepository.findByClientId("public-client");
42+
RegisteredClient registeredClient = this.registeredClientRepository.findByClientId("pkce-client");
4343
assertThat(registeredClient).isNotNull();
4444

4545
AuthorizationCodeGrantFlow authorizationCodeGrantFlow = new AuthorizationCodeGrantFlow(this.mockMvc);

my-samples/auth-server-03-min/src/main/java/com/chensoul/config/SecurityConfig.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,11 +62,18 @@ public RegisteredClientRepository registeredClientRepository() {
6262
.scope("client.read")
6363
.build();
6464

65-
RegisteredClient publicClient = RegisteredClient.withId(UUID.randomUUID().toString())
66-
.clientId("public-client")
65+
RegisteredClient pkceClient = RegisteredClient.withId(UUID.randomUUID().toString())
66+
.clientId("pkce-client")
6767
.clientAuthenticationMethod(ClientAuthenticationMethod.NONE)
68+
.clientAuthenticationMethod(ClientAuthenticationMethod.CLIENT_SECRET_BASIC)
69+
.clientAuthenticationMethod(ClientAuthenticationMethod.CLIENT_SECRET_POST)
6870
.authorizationGrantType(AuthorizationGrantType.AUTHORIZATION_CODE)
71+
.authorizationGrantType(AuthorizationGrantType.REFRESH_TOKEN)
6972
.redirectUri("http://127.0.0.1:4200")
73+
.redirectUri("https://oidcdebugger.com/debug")
74+
.redirectUri("https://oauthdebugger.com/debug")
75+
.redirectUri("http://127.0.0.1:8080/login/oauth2/code/pkce-client")
76+
.postLogoutRedirectUri("http://127.0.0.1:8080/")
7077
.scope(OidcScopes.OPENID)
7178
.scope(OidcScopes.PROFILE)
7279
.clientSettings(ClientSettings.builder()
@@ -87,6 +94,6 @@ public RegisteredClientRepository registeredClientRepository() {
8794
).build();
8895

8996
// @formatter:on
90-
return new InMemoryRegisteredClientRepository(oidcClient, credentialsClient, publicClient, opaqueClient);
97+
return new InMemoryRegisteredClientRepository(oidcClient, credentialsClient, pkceClient, opaqueClient);
9198
}
9299
}

my-samples/auth-server-04-jwks-keypair/src/main/java/com/chensoul/config/SecurityConfig.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,11 +78,18 @@ public RegisteredClientRepository registeredClientRepository() {
7878
.scope("client.read")
7979
.build();
8080

81-
RegisteredClient publicClient = RegisteredClient.withId(UUID.randomUUID().toString())
82-
.clientId("public-client")
81+
RegisteredClient pkceClient = RegisteredClient.withId(UUID.randomUUID().toString())
82+
.clientId("pkce-client")
8383
.clientAuthenticationMethod(ClientAuthenticationMethod.NONE)
84+
.clientAuthenticationMethod(ClientAuthenticationMethod.CLIENT_SECRET_BASIC)
85+
.clientAuthenticationMethod(ClientAuthenticationMethod.CLIENT_SECRET_POST)
8486
.authorizationGrantType(AuthorizationGrantType.AUTHORIZATION_CODE)
87+
.authorizationGrantType(AuthorizationGrantType.REFRESH_TOKEN)
8588
.redirectUri("http://127.0.0.1:4200")
89+
.redirectUri("https://oidcdebugger.com/debug")
90+
.redirectUri("https://oauthdebugger.com/debug")
91+
.redirectUri("http://127.0.0.1:8080/login/oauth2/code/pkce-client")
92+
.postLogoutRedirectUri("http://127.0.0.1:8080/")
8693
.scope(OidcScopes.OPENID)
8794
.scope(OidcScopes.PROFILE)
8895
.clientSettings(ClientSettings.builder()
@@ -103,7 +110,7 @@ public RegisteredClientRepository registeredClientRepository() {
103110
).build();
104111

105112
// @formatter:on
106-
return new InMemoryRegisteredClientRepository(oidcClient, credentialsClient, publicClient, opaqueClient);
113+
return new InMemoryRegisteredClientRepository(oidcClient, credentialsClient, pkceClient, opaqueClient);
107114
}
108115

109116
@Bean

my-samples/auth-server-05-accessTokenResponseHandler/src/main/java/com/chensoul/config/SecurityConfig.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -104,11 +104,18 @@ public RegisteredClientRepository registeredClientRepository() {
104104
.scope("client.read")
105105
.build();
106106

107-
RegisteredClient publicClient = RegisteredClient.withId(UUID.randomUUID().toString())
108-
.clientId("public-client")
107+
RegisteredClient pkceClient = RegisteredClient.withId(UUID.randomUUID().toString())
108+
.clientId("pkce-client")
109109
.clientAuthenticationMethod(ClientAuthenticationMethod.NONE)
110+
.clientAuthenticationMethod(ClientAuthenticationMethod.CLIENT_SECRET_BASIC)
111+
.clientAuthenticationMethod(ClientAuthenticationMethod.CLIENT_SECRET_POST)
110112
.authorizationGrantType(AuthorizationGrantType.AUTHORIZATION_CODE)
113+
.authorizationGrantType(AuthorizationGrantType.REFRESH_TOKEN)
111114
.redirectUri("http://127.0.0.1:4200")
115+
.redirectUri("https://oidcdebugger.com/debug")
116+
.redirectUri("https://oauthdebugger.com/debug")
117+
.redirectUri("http://127.0.0.1:8080/login/oauth2/code/pkce-client")
118+
.postLogoutRedirectUri("http://127.0.0.1:8080/")
112119
.scope(OidcScopes.OPENID)
113120
.scope(OidcScopes.PROFILE)
114121
.clientSettings(ClientSettings.builder()
@@ -129,7 +136,7 @@ public RegisteredClientRepository registeredClientRepository() {
129136
).build();
130137

131138
// @formatter:on
132-
return new InMemoryRegisteredClientRepository(oidcClient, credentialsClient, publicClient, opaqueClient);
139+
return new InMemoryRegisteredClientRepository(oidcClient, credentialsClient, pkceClient, opaqueClient);
133140
}
134141

135142
@Bean

my-samples/auth-server-06-OAuth2TokenCustomizer/src/main/java/com/chensoul/config/SecurityConfig.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,18 @@ public RegisteredClientRepository registeredClientRepository() {
6363
.scope("client.read")
6464
.build();
6565

66-
RegisteredClient publicClient = RegisteredClient.withId(UUID.randomUUID().toString())
67-
.clientId("public-client")
66+
RegisteredClient pkceClient = RegisteredClient.withId(UUID.randomUUID().toString())
67+
.clientId("pkce-client")
6868
.clientAuthenticationMethod(ClientAuthenticationMethod.NONE)
69+
.clientAuthenticationMethod(ClientAuthenticationMethod.CLIENT_SECRET_BASIC)
70+
.clientAuthenticationMethod(ClientAuthenticationMethod.CLIENT_SECRET_POST)
6971
.authorizationGrantType(AuthorizationGrantType.AUTHORIZATION_CODE)
72+
.authorizationGrantType(AuthorizationGrantType.REFRESH_TOKEN)
7073
.redirectUri("http://127.0.0.1:4200")
74+
.redirectUri("https://oidcdebugger.com/debug")
75+
.redirectUri("https://oauthdebugger.com/debug")
76+
.redirectUri("http://127.0.0.1:8080/login/oauth2/code/pkce-client")
77+
.postLogoutRedirectUri("http://127.0.0.1:8080/")
7178
.scope(OidcScopes.OPENID)
7279
.scope(OidcScopes.PROFILE)
7380
.clientSettings(ClientSettings.builder()
@@ -88,6 +95,6 @@ public RegisteredClientRepository registeredClientRepository() {
8895
).build();
8996

9097
// @formatter:on
91-
return new InMemoryRegisteredClientRepository(oidcClient, credentialsClient, publicClient, opaqueClient);
98+
return new InMemoryRegisteredClientRepository(oidcClient, credentialsClient, pkceClient, opaqueClient);
9299
}
93100
}

my-samples/auth-server-custom-code/src/main/java/com/chensoul/config/SecurityConfig.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -103,11 +103,18 @@ public RegisteredClientRepository registeredClientRepository() {
103103
.scope("client.read")
104104
.build();
105105

106-
RegisteredClient publicClient = RegisteredClient.withId(UUID.randomUUID().toString())
107-
.clientId("public-client")
106+
RegisteredClient pkceClient = RegisteredClient.withId(UUID.randomUUID().toString())
107+
.clientId("pkce-client")
108108
.clientAuthenticationMethod(ClientAuthenticationMethod.NONE)
109+
.clientAuthenticationMethod(ClientAuthenticationMethod.CLIENT_SECRET_BASIC)
110+
.clientAuthenticationMethod(ClientAuthenticationMethod.CLIENT_SECRET_POST)
109111
.authorizationGrantType(AuthorizationGrantType.AUTHORIZATION_CODE)
112+
.authorizationGrantType(AuthorizationGrantType.REFRESH_TOKEN)
110113
.redirectUri("http://127.0.0.1:4200")
114+
.redirectUri("https://oidcdebugger.com/debug")
115+
.redirectUri("https://oauthdebugger.com/debug")
116+
.redirectUri("http://127.0.0.1:8080/login/oauth2/code/pkce-client")
117+
.postLogoutRedirectUri("http://127.0.0.1:8080/")
111118
.scope(OidcScopes.OPENID)
112119
.scope(OidcScopes.PROFILE)
113120
.clientSettings(ClientSettings.builder()
@@ -127,7 +134,7 @@ public RegisteredClientRepository registeredClientRepository() {
127134
.tokenSettings(TokenSettings.builder().accessTokenFormat(OAuth2TokenFormat.REFERENCE).build()
128135
).build();
129136
// @formatter:on
130-
return new InMemoryRegisteredClientRepository(oidcClient, credentialsClient, publicClient, opaqueClient);
137+
return new InMemoryRegisteredClientRepository(oidcClient, credentialsClient, pkceClient, opaqueClient);
131138
}
132139

133140
@Bean

my-samples/auth-server-custom-password/src/main/java/com/chensoul/config/SecurityConfig.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -126,11 +126,18 @@ public RegisteredClientRepository registeredClientRepository() {
126126
.scope("client.read")
127127
.build();
128128

129-
RegisteredClient publicClient = RegisteredClient.withId(UUID.randomUUID().toString())
130-
.clientId("public-client")
129+
RegisteredClient pkceClient = RegisteredClient.withId(UUID.randomUUID().toString())
130+
.clientId("pkce-client")
131131
.clientAuthenticationMethod(ClientAuthenticationMethod.NONE)
132+
.clientAuthenticationMethod(ClientAuthenticationMethod.CLIENT_SECRET_BASIC)
133+
.clientAuthenticationMethod(ClientAuthenticationMethod.CLIENT_SECRET_POST)
132134
.authorizationGrantType(AuthorizationGrantType.AUTHORIZATION_CODE)
135+
.authorizationGrantType(AuthorizationGrantType.REFRESH_TOKEN)
133136
.redirectUri("http://127.0.0.1:4200")
137+
.redirectUri("https://oidcdebugger.com/debug")
138+
.redirectUri("https://oauthdebugger.com/debug")
139+
.redirectUri("http://127.0.0.1:8080/login/oauth2/code/pkce-client")
140+
.postLogoutRedirectUri("http://127.0.0.1:8080/")
134141
.scope(OidcScopes.OPENID)
135142
.scope(OidcScopes.PROFILE)
136143
.clientSettings(ClientSettings.builder()
@@ -151,7 +158,7 @@ public RegisteredClientRepository registeredClientRepository() {
151158
).build();
152159

153160
// @formatter:on
154-
return new InMemoryRegisteredClientRepository(oidcClient, credentialsClient, publicClient, opaqueClient);
161+
return new InMemoryRegisteredClientRepository(oidcClient, credentialsClient, pkceClient, opaqueClient);
155162
}
156163

157164
@Bean

0 commit comments

Comments
 (0)