|
@@ -338,6 +338,44 @@ public class OAuth2AuthorizationCodeGrantFilterTests {
|
|
assertThat(authorizedClients.values().iterator().next()).isSameAs(authorizedClient);
|
|
assertThat(authorizedClients.values().iterator().next()).isSameAs(authorizedClient);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Test
|
|
|
|
+ public void doFilterWhenAuthorizationResponseSuccessAndAnonymousAccessNullAuthenticationThenAuthorizedClientSavedToHttpSession() throws Exception {
|
|
|
|
+ SecurityContext securityContext = SecurityContextHolder.createEmptyContext();
|
|
|
|
+ SecurityContextHolder.setContext(securityContext); // null Authentication
|
|
|
|
+
|
|
|
|
+ String requestUri = "/callback/client-1";
|
|
|
|
+ MockHttpServletRequest request = new MockHttpServletRequest("GET", requestUri);
|
|
|
|
+ request.setServletPath(requestUri);
|
|
|
|
+ request.addParameter(OAuth2ParameterNames.CODE, "code");
|
|
|
|
+ request.addParameter(OAuth2ParameterNames.STATE, "state");
|
|
|
|
+
|
|
|
|
+ MockHttpServletResponse response = new MockHttpServletResponse();
|
|
|
|
+ FilterChain filterChain = mock(FilterChain.class);
|
|
|
|
+
|
|
|
|
+ this.setUpAuthorizationRequest(request, response, this.registration1);
|
|
|
|
+ this.setUpAuthenticationResult(this.registration1);
|
|
|
|
+
|
|
|
|
+ this.filter.doFilter(request, response, filterChain);
|
|
|
|
+
|
|
|
|
+ OAuth2AuthorizedClient authorizedClient = this.authorizedClientRepository.loadAuthorizedClient(
|
|
|
|
+ this.registration1.getRegistrationId(), null, request);
|
|
|
|
+ assertThat(authorizedClient).isNotNull();
|
|
|
|
+
|
|
|
|
+ assertThat(authorizedClient.getClientRegistration()).isEqualTo(this.registration1);
|
|
|
|
+ assertThat(authorizedClient.getPrincipalName()).isEqualTo("anonymousUser");
|
|
|
|
+ assertThat(authorizedClient.getAccessToken()).isNotNull();
|
|
|
|
+
|
|
|
|
+ HttpSession session = request.getSession(false);
|
|
|
|
+ assertThat(session).isNotNull();
|
|
|
|
+
|
|
|
|
+ @SuppressWarnings("unchecked")
|
|
|
|
+ Map<String, OAuth2AuthorizedClient> authorizedClients = (Map<String, OAuth2AuthorizedClient>)
|
|
|
|
+ session.getAttribute(HttpSessionOAuth2AuthorizedClientRepository.class.getName() + ".AUTHORIZED_CLIENTS");
|
|
|
|
+ assertThat(authorizedClients).isNotEmpty();
|
|
|
|
+ assertThat(authorizedClients).hasSize(1);
|
|
|
|
+ assertThat(authorizedClients.values().iterator().next()).isSameAs(authorizedClient);
|
|
|
|
+ }
|
|
|
|
+
|
|
private void setUpAuthorizationRequest(HttpServletRequest request, HttpServletResponse response,
|
|
private void setUpAuthorizationRequest(HttpServletRequest request, HttpServletResponse response,
|
|
ClientRegistration registration) {
|
|
ClientRegistration registration) {
|
|
Map<String, Object> additionalParameters = new HashMap<>();
|
|
Map<String, Object> additionalParameters = new HashMap<>();
|