60
60
import org .springframework .security .oauth2 .server .authorization .client .TestRegisteredClients ;
61
61
import org .springframework .security .oauth2 .server .authorization .config .annotation .web .configuration .OAuth2AuthorizationServerConfiguration ;
62
62
import org .springframework .security .oauth2 .server .authorization .oidc .authentication .OidcUserInfoAuthenticationContext ;
63
- import org .springframework .security .oauth2 .server .authorization .oidc .authentication .OidcUserInfoAuthenticationToken ;
64
63
import org .springframework .security .oauth2 .server .authorization .settings .AuthorizationServerSettings ;
65
64
import org .springframework .security .oauth2 .server .authorization .test .SpringTestRule ;
66
- import org .springframework .security .oauth2 .server .resource .authentication .JwtAuthenticationToken ;
67
65
import org .springframework .security .web .SecurityFilterChain ;
68
66
import org .springframework .security .web .context .HttpSessionSecurityContextRepository ;
69
67
import org .springframework .security .web .context .SecurityContextRepository ;
73
71
import org .springframework .test .web .servlet .ResultMatcher ;
74
72
75
73
import static org .assertj .core .api .Assertions .assertThat ;
74
+ import static org .mockito .ArgumentMatchers .any ;
75
+ import static org .mockito .Mockito .mock ;
76
76
import static org .mockito .Mockito .reset ;
77
77
import static org .mockito .Mockito .spy ;
78
+ import static org .mockito .Mockito .verify ;
79
+ import static org .mockito .Mockito .when ;
78
80
import static org .springframework .test .web .servlet .request .MockMvcRequestBuilders .get ;
79
81
import static org .springframework .test .web .servlet .request .MockMvcRequestBuilders .post ;
80
82
import static org .springframework .test .web .servlet .result .MockMvcResultMatchers .jsonPath ;
@@ -101,14 +103,18 @@ public class OidcUserInfoTests {
101
103
@ Autowired
102
104
private OAuth2AuthorizationService authorizationService ;
103
105
106
+ private static Function <OidcUserInfoAuthenticationContext , OidcUserInfo > userInfoMapper ;
107
+
104
108
@ BeforeClass
105
109
public static void init () {
106
110
securityContextRepository = spy (new HttpSessionSecurityContextRepository ());
111
+ userInfoMapper = mock (Function .class );
107
112
}
108
113
109
114
@ Before
110
115
public void setup () {
111
116
reset (securityContextRepository );
117
+ reset (userInfoMapper );
112
118
}
113
119
114
120
@ Test
@@ -144,11 +150,12 @@ public void requestWhenUserInfoRequestPostThenUserInfoResponse() throws Exceptio
144
150
}
145
151
146
152
@ Test
147
- public void requestWhenSignedJwtAndCustomUserInfoMapperThenMapJwtClaimsToUserInfoResponse () throws Exception {
153
+ public void requestWhenUserInfoEndpointCustomizedThenUsed () throws Exception {
148
154
this .spring .register (CustomUserInfoConfiguration .class ).autowire ();
149
155
150
156
OAuth2Authorization authorization = createAuthorization ();
151
157
this .authorizationService .save (authorization );
158
+ when (userInfoMapper .apply (any ())).thenReturn (createUserInfo ());
152
159
153
160
OAuth2AccessToken accessToken = authorization .getAccessToken ().getToken ();
154
161
// @formatter:off
@@ -157,6 +164,7 @@ public void requestWhenSignedJwtAndCustomUserInfoMapperThenMapJwtClaimsToUserInf
157
164
.andExpect (status ().is2xxSuccessful ())
158
165
.andExpectAll (userInfoResponse ());
159
166
// @formatter:on
167
+ verify (userInfoMapper ).apply (any ());
160
168
}
161
169
162
170
// gh-482
@@ -270,14 +278,6 @@ SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
270
278
RequestMatcher endpointsMatcher = authorizationServerConfigurer
271
279
.getEndpointsMatcher ();
272
280
273
- // Custom User Info Mapper that retrieves claims from a signed JWT
274
- Function <OidcUserInfoAuthenticationContext , OidcUserInfo > userInfoMapper = context -> {
275
- OidcUserInfoAuthenticationToken authentication = context .getAuthentication ();
276
- JwtAuthenticationToken principal = (JwtAuthenticationToken ) authentication .getPrincipal ();
277
-
278
- return new OidcUserInfo (principal .getToken ().getClaims ());
279
- };
280
-
281
281
// @formatter:off
282
282
http
283
283
.requestMatcher (endpointsMatcher )
0 commit comments