Skip to content

Commit 02f161a

Browse files
committed
Use OidcIdToken.Builder
Issue gh-7592
1 parent 64e063d commit 02f161a

File tree

7 files changed

+52
-84
lines changed

7 files changed

+52
-84
lines changed

config/src/test/java/org/springframework/security/config/annotation/web/configurers/oauth2/client/OAuth2LoginConfigurerTests.java

+2-3
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
*/
1616
package org.springframework.security.config.annotation.web.configurers.oauth2.client;
1717

18-
import java.time.Instant;
1918
import java.util.ArrayList;
2019
import java.util.Arrays;
2120
import java.util.Collections;
@@ -93,6 +92,7 @@
9392
import static org.mockito.ArgumentMatchers.any;
9493
import static org.mockito.Mockito.mock;
9594
import static org.mockito.Mockito.when;
95+
import static org.springframework.security.oauth2.core.oidc.TestOidcIdTokens.idToken;
9696
import static org.springframework.security.oauth2.jwt.TestJwts.jwt;
9797
import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.authentication;
9898
import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf;
@@ -982,8 +982,7 @@ private static OAuth2UserService<OAuth2UserRequest, OAuth2User> createOauth2User
982982
}
983983

984984
private static OAuth2UserService<OidcUserRequest, OidcUser> createOidcUserService() {
985-
OidcIdToken idToken = new OidcIdToken("token123", Instant.now(),
986-
Instant.now().plusSeconds(3600), Collections.singletonMap(IdTokenClaimNames.SUB, "sub123"));
985+
OidcIdToken idToken = idToken().build();
987986
return request -> new DefaultOidcUser(
988987
Collections.singleton(new OidcUserAuthority(idToken)), idToken);
989988
}

oauth2/oauth2-client/src/test/java/org/springframework/security/oauth2/client/oidc/authentication/OidcAuthorizationCodeReactiveAuthenticationManagerTests.java

+14-12
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,21 @@
1616

1717
package org.springframework.security.oauth2.client.oidc.authentication;
1818

19+
import java.security.NoSuchAlgorithmException;
20+
import java.util.Arrays;
21+
import java.util.Base64;
22+
import java.util.Collections;
23+
import java.util.HashMap;
24+
import java.util.Map;
25+
1926
import org.junit.Before;
2027
import org.junit.Test;
2128
import org.junit.runner.RunWith;
2229
import org.mockito.ArgumentCaptor;
2330
import org.mockito.Mock;
2431
import org.mockito.junit.MockitoJUnitRunner;
32+
import reactor.core.publisher.Mono;
33+
2534
import org.springframework.security.authentication.TestingAuthenticationToken;
2635
import org.springframework.security.core.authority.AuthorityUtils;
2736
import org.springframework.security.crypto.keygen.Base64StringKeyGenerator;
@@ -42,23 +51,17 @@
4251
import org.springframework.security.oauth2.core.endpoint.OAuth2AuthorizationResponse;
4352
import org.springframework.security.oauth2.core.oidc.IdTokenClaimNames;
4453
import org.springframework.security.oauth2.core.oidc.OidcIdToken;
54+
import org.springframework.security.oauth2.core.oidc.TestOidcIdTokens;
4555
import org.springframework.security.oauth2.core.oidc.endpoint.OidcParameterNames;
4656
import org.springframework.security.oauth2.core.oidc.user.DefaultOidcUser;
4757
import org.springframework.security.oauth2.core.oidc.user.OidcUser;
4858
import org.springframework.security.oauth2.jwt.Jwt;
4959
import org.springframework.security.oauth2.jwt.JwtException;
5060
import org.springframework.security.oauth2.jwt.ReactiveJwtDecoder;
51-
import reactor.core.publisher.Mono;
52-
53-
import java.security.NoSuchAlgorithmException;
54-
import java.time.Instant;
55-
import java.util.Arrays;
56-
import java.util.Base64;
57-
import java.util.Collections;
58-
import java.util.HashMap;
59-
import java.util.Map;
6061

61-
import static org.assertj.core.api.Assertions.*;
62+
import static org.assertj.core.api.Assertions.assertThat;
63+
import static org.assertj.core.api.Assertions.assertThatCode;
64+
import static org.assertj.core.api.Assertions.assertThatThrownBy;
6265
import static org.mockito.ArgumentMatchers.any;
6366
import static org.mockito.Mockito.when;
6467
import static org.springframework.security.oauth2.client.oidc.authentication.OidcAuthorizationCodeReactiveAuthenticationManager.createHash;
@@ -87,8 +90,7 @@ public class OidcAuthorizationCodeReactiveAuthenticationManagerTests {
8790
.success("code")
8891
.state("state");
8992

90-
private OidcIdToken idToken = new OidcIdToken("token123", Instant.now(),
91-
Instant.now().plusSeconds(3600), Collections.singletonMap(IdTokenClaimNames.SUB, "sub123"));
93+
private OidcIdToken idToken = TestOidcIdTokens.idToken().build();
9294

9395
private OidcAuthorizationCodeReactiveAuthenticationManager manager;
9496

oauth2/oauth2-client/src/test/java/org/springframework/security/oauth2/client/oidc/userinfo/OidcReactiveOAuth2UserServiceTests.java

+6-14
Original file line numberDiff line numberDiff line change
@@ -75,9 +75,7 @@ public class OidcReactiveOAuth2UserServiceTests {
7575
private ClientRegistration.Builder registration = TestClientRegistrations.clientRegistration()
7676
.userNameAttributeName(IdTokenClaimNames.SUB);
7777

78-
private OidcIdToken idToken = new OidcIdToken("token123", Instant.now(),
79-
Instant.now().plusSeconds(3600), Collections
80-
.singletonMap(IdTokenClaimNames.SUB, "sub123"));
78+
private OidcIdToken idToken = idToken().build();
8179

8280
private OAuth2AccessToken accessToken = new OAuth2AccessToken(OAuth2AccessToken.TokenType.BEARER,
8381
"token",
@@ -149,7 +147,7 @@ public void loadUserWhenOAuth2UserSubjectNotEqualThenOAuth2AuthenticationExcepti
149147
@Test
150148
public void loadUserWhenOAuth2UserThenUserInfoNotNull() {
151149
Map<String, Object> attributes = new HashMap<>();
152-
attributes.put(StandardClaimNames.SUB, "sub123");
150+
attributes.put(StandardClaimNames.SUB, "subject");
153151
attributes.put("user", "rob");
154152
OAuth2User oauth2User = new DefaultOAuth2User(AuthorityUtils.createAuthorityList("ROLE_USER"),
155153
attributes, "user");
@@ -162,7 +160,7 @@ public void loadUserWhenOAuth2UserThenUserInfoNotNull() {
162160
public void loadUserWhenOAuth2UserAndUser() {
163161
this.registration.userNameAttributeName("user");
164162
Map<String, Object> attributes = new HashMap<>();
165-
attributes.put(StandardClaimNames.SUB, "sub123");
163+
attributes.put(StandardClaimNames.SUB, "subject");
166164
attributes.put("user", "rob");
167165
OAuth2User oauth2User = new DefaultOAuth2User(AuthorityUtils.createAuthorityList("ROLE_USER"),
168166
attributes, "user");
@@ -174,7 +172,7 @@ public void loadUserWhenOAuth2UserAndUser() {
174172
@Test
175173
public void loadUserWhenCustomClaimTypeConverterFactorySetThenApplied() {
176174
Map<String, Object> attributes = new HashMap<>();
177-
attributes.put(StandardClaimNames.SUB, "sub123");
175+
attributes.put(StandardClaimNames.SUB, "subject");
178176
attributes.put("user", "rob");
179177
OAuth2User oauth2User = new DefaultOAuth2User(AuthorityUtils.createAuthorityList("ROLE_USER"),
180178
attributes, "user");
@@ -195,12 +193,9 @@ public void loadUserWhenCustomClaimTypeConverterFactorySetThenApplied() {
195193

196194
@Test
197195
public void loadUserWhenTokenContainsScopesThenIndividualScopeAuthorities() {
198-
Map<String, Object> body = new HashMap<>();
199-
body.put("id", "id");
200-
body.put("sub", "test-subject");
201196
OidcReactiveOAuth2UserService userService = new OidcReactiveOAuth2UserService();
202197
OidcUserRequest request = new OidcUserRequest(
203-
clientRegistration().build(), scopes("message:read", "message:write"), idToken(body));
198+
clientRegistration().build(), scopes("message:read", "message:write"), idToken().build());
204199
OidcUser user = userService.loadUser(request).block();
205200

206201
assertThat(user.getAuthorities()).hasSize(3);
@@ -212,12 +207,9 @@ public void loadUserWhenTokenContainsScopesThenIndividualScopeAuthorities() {
212207

213208
@Test
214209
public void loadUserWhenTokenDoesNotContainScopesThenNoScopeAuthorities() {
215-
Map<String, Object> body = new HashMap<>();
216-
body.put("id", "id");
217-
body.put("sub", "test-subject");
218210
OidcReactiveOAuth2UserService userService = new OidcReactiveOAuth2UserService();
219211
OidcUserRequest request = new OidcUserRequest(
220-
clientRegistration().build(), noScopes(), idToken(body));
212+
clientRegistration().build(), noScopes(), idToken().build());
221213
OidcUser user = userService.loadUser(request).block();
222214

223215
assertThat(user.getAuthorities()).hasSize(1);

oauth2/oauth2-client/src/test/java/org/springframework/security/oauth2/client/oidc/userinfo/OidcUserRequestTests.java

+11-27
Original file line numberDiff line numberDiff line change
@@ -15,23 +15,23 @@
1515
*/
1616
package org.springframework.security.oauth2.client.oidc.userinfo;
1717

18-
import org.junit.Before;
19-
import org.junit.Test;
20-
import org.springframework.security.oauth2.client.registration.ClientRegistration;
21-
import org.springframework.security.oauth2.core.AuthorizationGrantType;
22-
import org.springframework.security.oauth2.core.ClientAuthenticationMethod;
23-
import org.springframework.security.oauth2.core.OAuth2AccessToken;
24-
import org.springframework.security.oauth2.core.oidc.IdTokenClaimNames;
25-
import org.springframework.security.oauth2.core.oidc.OidcIdToken;
26-
2718
import java.time.Instant;
2819
import java.util.Arrays;
2920
import java.util.HashMap;
3021
import java.util.LinkedHashSet;
3122
import java.util.Map;
3223

24+
import org.junit.Before;
25+
import org.junit.Test;
26+
27+
import org.springframework.security.oauth2.client.registration.ClientRegistration;
28+
import org.springframework.security.oauth2.core.OAuth2AccessToken;
29+
import org.springframework.security.oauth2.core.oidc.OidcIdToken;
30+
3331
import static org.assertj.core.api.Assertions.assertThat;
3432
import static org.assertj.core.api.Assertions.assertThatThrownBy;
33+
import static org.springframework.security.oauth2.client.registration.TestClientRegistrations.clientRegistration;
34+
import static org.springframework.security.oauth2.core.oidc.TestOidcIdTokens.idToken;
3535

3636
/**
3737
* Tests for {@link OidcUserRequest}.
@@ -46,27 +46,11 @@ public class OidcUserRequestTests {
4646

4747
@Before
4848
public void setUp() {
49-
this.clientRegistration = ClientRegistration.withRegistrationId("registration-1")
50-
.clientId("client-1")
51-
.clientSecret("secret")
52-
.clientAuthenticationMethod(ClientAuthenticationMethod.BASIC)
53-
.authorizationGrantType(AuthorizationGrantType.AUTHORIZATION_CODE)
54-
.redirectUriTemplate("https://client.com")
55-
.scope(new LinkedHashSet<>(Arrays.asList("openid", "profile")))
56-
.authorizationUri("https://provider.com/oauth2/authorization")
57-
.tokenUri("https://provider.com/oauth2/token")
58-
.jwkSetUri("https://provider.com/keys")
59-
.clientName("Client 1")
60-
.build();
49+
this.clientRegistration = clientRegistration().build();
6150
this.accessToken = new OAuth2AccessToken(OAuth2AccessToken.TokenType.BEARER,
6251
"access-token-1234", Instant.now(), Instant.now().plusSeconds(60),
6352
new LinkedHashSet<>(Arrays.asList("scope1", "scope2")));
64-
Map<String, Object> claims = new HashMap<>();
65-
claims.put(IdTokenClaimNames.ISS, "https://provider.com");
66-
claims.put(IdTokenClaimNames.SUB, "subject1");
67-
claims.put(IdTokenClaimNames.AZP, "client-1");
68-
this.idToken = new OidcIdToken("id-token-1234", Instant.now(),
69-
Instant.now().plusSeconds(3600), claims);
53+
this.idToken = idToken().authorizedParty(this.clientRegistration.getClientId()).build();
7054
this.additionalParameters = new HashMap<>();
7155
this.additionalParameters.put("param1", "value1");
7256
this.additionalParameters.put("param2", "value2");

oauth2/oauth2-client/src/test/java/org/springframework/security/oauth2/client/oidc/userinfo/OidcUserRequestUtilsTests.java

+8-9
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,20 @@
1616

1717
package org.springframework.security.oauth2.client.oidc.userinfo;
1818

19+
import java.time.Duration;
20+
import java.time.Instant;
21+
import java.util.Collections;
22+
1923
import org.junit.Test;
24+
2025
import org.springframework.security.oauth2.client.registration.ClientRegistration;
2126
import org.springframework.security.oauth2.client.registration.TestClientRegistrations;
2227
import org.springframework.security.oauth2.core.AuthorizationGrantType;
2328
import org.springframework.security.oauth2.core.OAuth2AccessToken;
24-
import org.springframework.security.oauth2.core.oidc.IdTokenClaimNames;
2529
import org.springframework.security.oauth2.core.oidc.OidcIdToken;
30+
import org.springframework.security.oauth2.core.oidc.TestOidcIdTokens;
2631

27-
import java.time.Duration;
28-
import java.time.Instant;
29-
import java.util.Collections;
30-
31-
import static org.assertj.core.api.Assertions.*;
32+
import static org.assertj.core.api.Assertions.assertThat;
3233

3334
/**
3435
* @author Rob Winch
@@ -37,9 +38,7 @@
3738
public class OidcUserRequestUtilsTests {
3839
private ClientRegistration.Builder registration = TestClientRegistrations.clientRegistration();
3940

40-
OidcIdToken idToken = new OidcIdToken("token123", Instant.now(),
41-
Instant.now().plusSeconds(3600), Collections
42-
.singletonMap(IdTokenClaimNames.SUB, "sub123"));
41+
OidcIdToken idToken = TestOidcIdTokens.idToken().build();
4342

4443
OAuth2AccessToken accessToken = new OAuth2AccessToken(OAuth2AccessToken.TokenType.BEARER,
4544
"token",

oauth2/oauth2-client/src/test/java/org/springframework/security/oauth2/client/oidc/userinfo/OidcUserServiceTests.java

+2-8
Original file line numberDiff line numberDiff line change
@@ -492,12 +492,9 @@ public void loadUserWhenCustomClaimTypeConverterFactorySetThenApplied() {
492492

493493
@Test
494494
public void loadUserWhenTokenContainsScopesThenIndividualScopeAuthorities() {
495-
Map<String, Object> body = new HashMap<>();
496-
body.put("id", "id");
497-
body.put("sub", "test-subject");
498495
OidcUserService userService = new OidcUserService();
499496
OidcUserRequest request = new OidcUserRequest(clientRegistration().build(),
500-
scopes("message:read", "message:write"), idToken(body));
497+
scopes("message:read", "message:write"), idToken().build());
501498
OidcUser user = userService.loadUser(request);
502499

503500
assertThat(user.getAuthorities()).hasSize(3);
@@ -509,12 +506,9 @@ public void loadUserWhenTokenContainsScopesThenIndividualScopeAuthorities() {
509506

510507
@Test
511508
public void loadUserWhenTokenDoesNotContainScopesThenNoScopeAuthorities() {
512-
Map<String, Object> body = new HashMap<>();
513-
body.put("id", "id");
514-
body.put("sub", "test-subject");
515509
OidcUserService userService = new OidcUserService();
516510
OidcUserRequest request = new OidcUserRequest(clientRegistration().build(),
517-
noScopes(), idToken(body));
511+
noScopes(), idToken().build());
518512
OidcUser user = userService.loadUser(request);
519513

520514
assertThat(user.getAuthorities()).hasSize(1);

oauth2/oauth2-core/src/test/java/org/springframework/security/oauth2/core/oidc/TestOidcIdTokens.java

+9-11
Original file line numberDiff line numberDiff line change
@@ -17,23 +17,21 @@
1717
package org.springframework.security.oauth2.core.oidc;
1818

1919
import java.time.Instant;
20-
import java.util.Collections;
21-
import java.util.Map;
20+
21+
import static org.springframework.security.oauth2.core.oidc.OidcIdToken.withTokenValue;
2222

2323
/**
2424
* Test {@link OidcIdToken}s
2525
*
2626
* @author Josh Cummings
2727
*/
2828
public class TestOidcIdTokens {
29-
public static OidcIdToken idToken() {
30-
return idToken(Collections.singletonMap("id", "id"));
31-
}
32-
33-
public static OidcIdToken idToken(Map<String, Object> claims) {
34-
return new OidcIdToken("token",
35-
Instant.now(),
36-
Instant.now().plusSeconds(86400),
37-
claims);
29+
public static OidcIdToken.Builder idToken() {
30+
return withTokenValue("id-token")
31+
.issuer("https://example.com")
32+
.subject("subject")
33+
.issuedAt(Instant.now())
34+
.expiresAt(Instant.now().plusSeconds(86400))
35+
.claim("id", "id");
3836
}
3937
}

0 commit comments

Comments
 (0)