Browse Source

Added HttpServletResponse to AuthorizationRequestRepository

This change enables AuthorizationRequestRepository to possibly save the AuthorizationRequestAttributes to a cookie.

Fixes gh-4446
pull/4497/head
Luander Ribeiro 9 years ago committed by Joe Grandja
parent
commit
65734414f7
  1. 2
      oauth2/oauth2-client/src/main/java/org/springframework/security/oauth2/client/authentication/AuthorizationCodeRequestRedirectFilter.java
  2. 4
      oauth2/oauth2-client/src/main/java/org/springframework/security/oauth2/client/authentication/AuthorizationRequestRepository.java
  3. 4
      oauth2/oauth2-client/src/main/java/org/springframework/security/oauth2/client/authentication/HttpSessionAuthorizationRequestRepository.java
  4. 9
      oauth2/oauth2-client/src/test/java/org/springframework/security/oauth2/client/authentication/AuthorizationCodeAuthenticationProcessingFilterTests.java

2
oauth2/oauth2-client/src/main/java/org/springframework/security/oauth2/client/authentication/AuthorizationCodeRequestRedirectFilter.java

@ -126,7 +126,7 @@ public class AuthorizationCodeRequestRedirectFilter extends OncePerRequestFilter @@ -126,7 +126,7 @@ public class AuthorizationCodeRequestRedirectFilter extends OncePerRequestFilter
.state(this.stateGenerator.generateKey())
.build();
this.authorizationRequestRepository.saveAuthorizationRequest(authorizationRequestAttributes, request);
this.authorizationRequestRepository.saveAuthorizationRequest(authorizationRequestAttributes, request, response);
URI redirectUri = this.authorizationUriBuilder.build(authorizationRequestAttributes);
this.authorizationRedirectStrategy.sendRedirect(request, response, redirectUri.toString());

4
oauth2/oauth2-client/src/main/java/org/springframework/security/oauth2/client/authentication/AuthorizationRequestRepository.java

@ -18,6 +18,7 @@ package org.springframework.security.oauth2.client.authentication; @@ -18,6 +18,7 @@ package org.springframework.security.oauth2.client.authentication;
import org.springframework.security.oauth2.core.endpoint.AuthorizationRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Implementations of this interface are responsible for the persistence
@ -38,7 +39,8 @@ public interface AuthorizationRequestRepository { @@ -38,7 +39,8 @@ public interface AuthorizationRequestRepository {
AuthorizationRequestAttributes loadAuthorizationRequest(HttpServletRequest request);
void saveAuthorizationRequest(AuthorizationRequestAttributes authorizationRequest, HttpServletRequest request);
void saveAuthorizationRequest(AuthorizationRequestAttributes authorizationRequest, HttpServletRequest request,
HttpServletResponse response);
AuthorizationRequestAttributes removeAuthorizationRequest(HttpServletRequest request);

4
oauth2/oauth2-client/src/main/java/org/springframework/security/oauth2/client/authentication/HttpSessionAuthorizationRequestRepository.java

@ -18,6 +18,7 @@ package org.springframework.security.oauth2.client.authentication; @@ -18,6 +18,7 @@ package org.springframework.security.oauth2.client.authentication;
import org.springframework.security.oauth2.core.endpoint.AuthorizationRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
@ -44,7 +45,8 @@ public final class HttpSessionAuthorizationRequestRepository implements Authoriz @@ -44,7 +45,8 @@ public final class HttpSessionAuthorizationRequestRepository implements Authoriz
}
@Override
public void saveAuthorizationRequest(AuthorizationRequestAttributes authorizationRequest, HttpServletRequest request) {
public void saveAuthorizationRequest(AuthorizationRequestAttributes authorizationRequest, HttpServletRequest request,
HttpServletResponse response) {
if (authorizationRequest == null) {
this.removeAuthorizationRequest(request);
return;

9
oauth2/oauth2-client/src/test/java/org/springframework/security/oauth2/client/authentication/AuthorizationCodeAuthenticationProcessingFilterTests.java

@ -106,8 +106,8 @@ public class AuthorizationCodeAuthenticationProcessingFilterTests { @@ -106,8 +106,8 @@ public class AuthorizationCodeAuthenticationProcessingFilterTests {
String state = "some state";
request.addParameter(OAuth2Parameter.CODE, authCode);
request.addParameter(OAuth2Parameter.STATE, state);
setupAuthorizationRequest(authorizationRequestRepository, request, clientRegistration, state);
MockHttpServletResponse response = new MockHttpServletResponse();
setupAuthorizationRequest(authorizationRequestRepository, request, response, clientRegistration, state);
FilterChain filterChain = mock(FilterChain.class);
filter.doFilter(request, response, filterChain);
@ -156,8 +156,8 @@ public class AuthorizationCodeAuthenticationProcessingFilterTests { @@ -156,8 +156,8 @@ public class AuthorizationCodeAuthenticationProcessingFilterTests {
String state = "some other state";
request.addParameter(OAuth2Parameter.CODE, authCode);
request.addParameter(OAuth2Parameter.STATE, state);
setupAuthorizationRequest(authorizationRequestRepository, request, clientRegistration, "some state");
MockHttpServletResponse response = new MockHttpServletResponse();
setupAuthorizationRequest(authorizationRequestRepository, request, response, clientRegistration, "some state");
FilterChain filterChain = mock(FilterChain.class);
filter.doFilter(request, response, filterChain);
@ -181,8 +181,8 @@ public class AuthorizationCodeAuthenticationProcessingFilterTests { @@ -181,8 +181,8 @@ public class AuthorizationCodeAuthenticationProcessingFilterTests {
String state = "some state";
request.addParameter(OAuth2Parameter.CODE, authCode);
request.addParameter(OAuth2Parameter.STATE, state);
setupAuthorizationRequest(authorizationRequestRepository, request, clientRegistration, state);
MockHttpServletResponse response = new MockHttpServletResponse();
setupAuthorizationRequest(authorizationRequestRepository, request, response, clientRegistration, state);
FilterChain filterChain = mock(FilterChain.class);
filter.doFilter(request, response, filterChain);
@ -227,6 +227,7 @@ public class AuthorizationCodeAuthenticationProcessingFilterTests { @@ -227,6 +227,7 @@ public class AuthorizationCodeAuthenticationProcessingFilterTests {
private void setupAuthorizationRequest(AuthorizationRequestRepository authorizationRequestRepository,
HttpServletRequest request,
HttpServletResponse response,
ClientRegistration clientRegistration,
String state) {
@ -239,7 +240,7 @@ public class AuthorizationCodeAuthenticationProcessingFilterTests { @@ -239,7 +240,7 @@ public class AuthorizationCodeAuthenticationProcessingFilterTests {
.state(state)
.build();
authorizationRequestRepository.saveAuthorizationRequest(authorizationRequestAttributes, request);
authorizationRequestRepository.saveAuthorizationRequest(authorizationRequestAttributes, request, response);
}
private MockHttpServletRequest setupRequest(ClientRegistration clientRegistration) {

Loading…
Cancel
Save