Skip to content

Commit

Permalink
refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
strehle committed Jul 6, 2023
1 parent 14d61fa commit dfa37c3
Show file tree
Hide file tree
Showing 7 changed files with 40 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -55,5 +55,5 @@ public class ClaimConstants {
public static final String AMR = "amr";
public static final String ACR = "acr";
public static final String PREVIOUS_LOGON_TIME = "previous_logon_time";
public static final String CLIENT_AUTHENTICATION = "client_auth";
public static final String CLIENT_AUTH_METHOD = "client_auth_method";
}
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ private Authentication performClientAuthentication(HttpServletRequest req, Map<S
if (auth.getDetails() instanceof UaaAuthenticationDetails) {
UaaAuthenticationDetails clientDetails = (UaaAuthenticationDetails) auth.getDetails();
if (clientDetails.getAuthenticationMethod() != null) {
authorizationRequest.setExtensions(Map.of(ClaimConstants.CLIENT_AUTHENTICATION, clientDetails.getAuthenticationMethod()));
authorizationRequest.setExtensions(Map.of(ClaimConstants.CLIENT_AUTH_METHOD, clientDetails.getAuthenticationMethod()));
}
}
//must set this to true in order for
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@
import static org.cloudfoundry.identity.uaa.oauth.token.ClaimConstants.AUTH_TIME;
import static org.cloudfoundry.identity.uaa.oauth.token.ClaimConstants.AZP;
import static org.cloudfoundry.identity.uaa.oauth.token.ClaimConstants.CID;
import static org.cloudfoundry.identity.uaa.oauth.token.ClaimConstants.CLIENT_AUTHENTICATION;
import static org.cloudfoundry.identity.uaa.oauth.token.ClaimConstants.CLIENT_AUTH_METHOD;
import static org.cloudfoundry.identity.uaa.oauth.token.ClaimConstants.CLIENT_ID;
import static org.cloudfoundry.identity.uaa.oauth.token.ClaimConstants.EMAIL;
import static org.cloudfoundry.identity.uaa.oauth.token.ClaimConstants.EXPIRY_IN_SECONDS;
Expand Down Expand Up @@ -417,9 +417,9 @@ private CompositeToken createCompositeToken(String tokenId,
info.put(ADDITIONAL_AZ_ATTR, additionalAuthorizationAttributes);
}

String clientAuthentication = userAuthenticationData.client_auth;
String clientAuthentication = userAuthenticationData.clientAuth;
if (clientAuthentication != null) {
addRootClaimEntry(additionalRootClaims, CLIENT_AUTHENTICATION, clientAuthentication);
addRootClaimEntry(additionalRootClaims, CLIENT_AUTH_METHOD, clientAuthentication);
}

String nonce = userAuthenticationData.nonce;
Expand Down Expand Up @@ -649,7 +649,7 @@ public OAuth2AccessToken createAccessToken(OAuth2Authentication authentication)
userAttributesForIdToken,
nonce,
grantType,
ofNullable(oAuth2Request.getExtensions().get(CLIENT_AUTHENTICATION)).map(String.class::cast).orElse(null),
ofNullable(oAuth2Request.getExtensions().get(CLIENT_AUTH_METHOD)).map(String.class::cast).orElse(null),
tokenId);

String refreshTokenValue = refreshToken != null ? refreshToken.getValue() : null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ public class UserAuthenticationData {
public final Map<String, List<String>> userAttributes;
public final String nonce;
public final String grantType;
public final String client_auth;
public final String clientAuth;
public final String jti;

public UserAuthenticationData(Date authTime,
Expand All @@ -25,7 +25,7 @@ public UserAuthenticationData(Date authTime,
Map<String, List<String>> userAttributes,
String nonce,
String grantType,
String client_auth,
String clientAuth,
String jti) {
this.authTime = authTime;
this.authenticationMethods = authenticationMethods;
Expand All @@ -35,7 +35,7 @@ public UserAuthenticationData(Date authTime,
this.userAttributes = userAttributes;
this.nonce = nonce;
this.grantType = grantType;
this.client_auth = client_auth;
this.clientAuth = clientAuth;
this.jti = jti;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ protected OAuth2Authentication getOAuth2Authentication(ClientDetails client, Tok

String clientAuthentication = UaaSecurityContextUtils.getClientAuthenticationMethod();
if (clientAuthentication != null) {
finalStoredOAuth2Request.getExtensions().put(ClaimConstants.CLIENT_AUTHENTICATION, clientAuthentication);
finalStoredOAuth2Request.getExtensions().put(ClaimConstants.CLIENT_AUTH_METHOD, clientAuthentication);
}

return new OAuth2Authentication(finalStoredOAuth2Request, userAuth);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import java.io.Serializable;
import java.util.Map;

import static org.cloudfoundry.identity.uaa.oauth.token.ClaimConstants.CLIENT_AUTHENTICATION;
import static org.cloudfoundry.identity.uaa.oauth.token.ClaimConstants.CLIENT_AUTH_METHOD;

public final class UaaSecurityContextUtils {

Expand All @@ -25,7 +25,7 @@ public static String getClientAuthenticationMethod() {
return null;
}

return (String) extensions.get(CLIENT_AUTHENTICATION);
return (String) extensions.get(CLIENT_AUTH_METHOD);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import org.springframework.mock.web.MockHttpServletResponse;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.BadCredentialsException;
import org.springframework.security.core.Authentication;
import org.springframework.security.web.AuthenticationEntryPoint;

import javax.servlet.ServletException;
Expand All @@ -27,6 +28,7 @@
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoInteractions;
import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.when;

Expand Down Expand Up @@ -56,4 +58,29 @@ public void doesNotContinueWithFilterChain_IfAuthenticationException() throws IO
verifyNoMoreInteractions(chain);
}

}
@Test
public void testStoreClientAuthenticationMethod() throws IOException, ServletException {
ClientParametersAuthenticationFilter filter = new ClientParametersAuthenticationFilter();

AuthenticationEntryPoint authenticationEntryPoint = mock(AuthenticationEntryPoint.class);
filter.setAuthenticationEntryPoint(authenticationEntryPoint);
AuthenticationManager clientAuthenticationManager = mock(AuthenticationManager.class);
filter.setClientAuthenticationManager(clientAuthenticationManager);

Authentication authentication = mock(Authentication.class);
MockHttpServletRequest request = new MockHttpServletRequest();
UaaAuthenticationDetails authenticationDetails = mock(UaaAuthenticationDetails.class);
when(clientAuthenticationManager.authenticate(Mockito.any())).thenReturn(authentication);
when(authentication.isAuthenticated()).thenReturn(true);
when(authentication.getDetails()).thenReturn(authenticationDetails);
when(authenticationDetails.getAuthenticationMethod()).thenReturn("none");

MockFilterChain chain = mock(MockFilterChain.class);
MockHttpServletResponse response = new MockHttpServletResponse();

filter.doFilter(request, response, chain);

verifyNoInteractions(authenticationEntryPoint);
verify(chain).doFilter(request, response);
}
}

0 comments on commit dfa37c3

Please sign in to comment.