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