|
@@ -83,7 +83,7 @@ public class OidcClientRegistrationAuthenticationProviderTests {
|
|
|
this.registeredClientRepository = mock(RegisteredClientRepository.class);
|
|
|
this.authorizationService = mock(OAuth2AuthorizationService.class);
|
|
|
this.jwtEncoder = mock(JwtEncoder.class);
|
|
|
- this.providerSettings = ProviderSettings.builder().build();
|
|
|
+ this.providerSettings = ProviderSettings.builder().issuer("https://auth-server:9000").build();
|
|
|
this.authenticationProvider = new OidcClientRegistrationAuthenticationProvider(
|
|
|
this.registeredClientRepository, this.authorizationService, this.jwtEncoder);
|
|
|
this.authenticationProvider.setProviderSettings(this.providerSettings);
|
|
@@ -117,14 +117,13 @@ public class OidcClientRegistrationAuthenticationProviderTests {
|
|
|
|
|
|
@Test
|
|
|
public void authenticateWhenPrincipalNotOAuth2TokenAuthenticationTokenThenThrowOAuth2AuthenticationException() {
|
|
|
- String issuer = "https://example.com/issuer1";
|
|
|
TestingAuthenticationToken principal = new TestingAuthenticationToken("principal", "credentials");
|
|
|
OidcClientRegistration clientRegistration = OidcClientRegistration.builder()
|
|
|
.redirectUri("https://client.example.com")
|
|
|
.build();
|
|
|
|
|
|
OidcClientRegistrationAuthenticationToken authentication = new OidcClientRegistrationAuthenticationToken(
|
|
|
- issuer, principal, clientRegistration);
|
|
|
+ principal, clientRegistration);
|
|
|
|
|
|
assertThatThrownBy(() -> this.authenticationProvider.authenticate(authentication))
|
|
|
.isInstanceOf(OAuth2AuthenticationException.class)
|
|
@@ -134,14 +133,13 @@ public class OidcClientRegistrationAuthenticationProviderTests {
|
|
|
|
|
|
@Test
|
|
|
public void authenticateWhenPrincipalNotAuthenticatedThenThrowOAuth2AuthenticationException() {
|
|
|
- String issuer = "https://example.com/issuer1";
|
|
|
JwtAuthenticationToken principal = new JwtAuthenticationToken(createJwtClientRegistration());
|
|
|
OidcClientRegistration clientRegistration = OidcClientRegistration.builder()
|
|
|
.redirectUri("https://client.example.com")
|
|
|
.build();
|
|
|
|
|
|
OidcClientRegistrationAuthenticationToken authentication = new OidcClientRegistrationAuthenticationToken(
|
|
|
- issuer, principal, clientRegistration);
|
|
|
+ principal, clientRegistration);
|
|
|
|
|
|
assertThatThrownBy(() -> this.authenticationProvider.authenticate(authentication))
|
|
|
.isInstanceOf(OAuth2AuthenticationException.class)
|
|
@@ -151,7 +149,6 @@ public class OidcClientRegistrationAuthenticationProviderTests {
|
|
|
|
|
|
@Test
|
|
|
public void authenticateWhenAccessTokenNotFoundThenThrowOAuth2AuthenticationException() {
|
|
|
- String issuer = "https://example.com/issuer1";
|
|
|
Jwt jwt = createJwtClientRegistration();
|
|
|
JwtAuthenticationToken principal = new JwtAuthenticationToken(
|
|
|
jwt, AuthorityUtils.createAuthorityList("SCOPE_client.create"));
|
|
@@ -160,7 +157,7 @@ public class OidcClientRegistrationAuthenticationProviderTests {
|
|
|
.build();
|
|
|
|
|
|
OidcClientRegistrationAuthenticationToken authentication = new OidcClientRegistrationAuthenticationToken(
|
|
|
- issuer, principal, clientRegistration);
|
|
|
+ principal, clientRegistration);
|
|
|
|
|
|
assertThatThrownBy(() -> this.authenticationProvider.authenticate(authentication))
|
|
|
.isInstanceOf(OAuth2AuthenticationException.class)
|
|
@@ -172,7 +169,6 @@ public class OidcClientRegistrationAuthenticationProviderTests {
|
|
|
|
|
|
@Test
|
|
|
public void authenticateWhenAccessTokenNotActiveThenThrowOAuth2AuthenticationException() {
|
|
|
- String issuer = "https://example.com/issuer1";
|
|
|
Jwt jwt = createJwtClientRegistration();
|
|
|
OAuth2AccessToken jwtAccessToken = new OAuth2AccessToken(OAuth2AccessToken.TokenType.BEARER,
|
|
|
jwt.getTokenValue(), jwt.getIssuedAt(),
|
|
@@ -192,7 +188,7 @@ public class OidcClientRegistrationAuthenticationProviderTests {
|
|
|
.build();
|
|
|
|
|
|
OidcClientRegistrationAuthenticationToken authentication = new OidcClientRegistrationAuthenticationToken(
|
|
|
- issuer, principal, clientRegistration);
|
|
|
+ principal, clientRegistration);
|
|
|
|
|
|
assertThatThrownBy(() -> this.authenticationProvider.authenticate(authentication))
|
|
|
.isInstanceOf(OAuth2AuthenticationException.class)
|
|
@@ -204,7 +200,6 @@ public class OidcClientRegistrationAuthenticationProviderTests {
|
|
|
|
|
|
@Test
|
|
|
public void authenticateWhenClientRegistrationRequestAndAccessTokenNotAuthorizedThenThrowOAuth2AuthenticationException() {
|
|
|
- String issuer = "https://example.com/issuer1";
|
|
|
Jwt jwt = createJwt(Collections.singleton("unauthorized.scope"));
|
|
|
OAuth2AccessToken jwtAccessToken = new OAuth2AccessToken(OAuth2AccessToken.TokenType.BEARER,
|
|
|
jwt.getTokenValue(), jwt.getIssuedAt(),
|
|
@@ -223,7 +218,7 @@ public class OidcClientRegistrationAuthenticationProviderTests {
|
|
|
.build();
|
|
|
|
|
|
OidcClientRegistrationAuthenticationToken authentication = new OidcClientRegistrationAuthenticationToken(
|
|
|
- issuer, principal, clientRegistration);
|
|
|
+ principal, clientRegistration);
|
|
|
|
|
|
assertThatThrownBy(() -> this.authenticationProvider.authenticate(authentication))
|
|
|
.isInstanceOf(OAuth2AuthenticationException.class)
|
|
@@ -235,7 +230,6 @@ public class OidcClientRegistrationAuthenticationProviderTests {
|
|
|
|
|
|
@Test
|
|
|
public void authenticateWhenClientRegistrationRequestAndAccessTokenContainsRequiredScopeAndAdditionalScopeThenThrowOAuth2AuthenticationException() {
|
|
|
- String issuer = "https://example.com/issuer1";
|
|
|
Jwt jwt = createJwt(new HashSet<>(Arrays.asList("client.create", "scope1")));
|
|
|
OAuth2AccessToken jwtAccessToken = new OAuth2AccessToken(OAuth2AccessToken.TokenType.BEARER,
|
|
|
jwt.getTokenValue(), jwt.getIssuedAt(),
|
|
@@ -254,7 +248,7 @@ public class OidcClientRegistrationAuthenticationProviderTests {
|
|
|
.build();
|
|
|
|
|
|
OidcClientRegistrationAuthenticationToken authentication = new OidcClientRegistrationAuthenticationToken(
|
|
|
- issuer, principal, clientRegistration);
|
|
|
+ principal, clientRegistration);
|
|
|
|
|
|
assertThatThrownBy(() -> this.authenticationProvider.authenticate(authentication))
|
|
|
.isInstanceOf(OAuth2AuthenticationException.class)
|
|
@@ -266,7 +260,6 @@ public class OidcClientRegistrationAuthenticationProviderTests {
|
|
|
|
|
|
@Test
|
|
|
public void authenticateWhenClientRegistrationRequestAndInvalidRedirectUriThenThrowOAuth2AuthenticationException() {
|
|
|
- String issuer = "https://example.com/issuer1";
|
|
|
Jwt jwt = createJwtClientRegistration();
|
|
|
OAuth2AccessToken jwtAccessToken = new OAuth2AccessToken(OAuth2AccessToken.TokenType.BEARER,
|
|
|
jwt.getTokenValue(), jwt.getIssuedAt(),
|
|
@@ -287,7 +280,7 @@ public class OidcClientRegistrationAuthenticationProviderTests {
|
|
|
// @formatter:on
|
|
|
|
|
|
OidcClientRegistrationAuthenticationToken authentication = new OidcClientRegistrationAuthenticationToken(
|
|
|
- issuer, principal, clientRegistration);
|
|
|
+ principal, clientRegistration);
|
|
|
|
|
|
assertThatThrownBy(() -> this.authenticationProvider.authenticate(authentication))
|
|
|
.isInstanceOf(OAuth2AuthenticationException.class)
|
|
@@ -299,7 +292,6 @@ public class OidcClientRegistrationAuthenticationProviderTests {
|
|
|
|
|
|
@Test
|
|
|
public void authenticateWhenClientRegistrationRequestAndRedirectUriContainsFragmentThenThrowOAuth2AuthenticationException() {
|
|
|
- String issuer = "https://example.com/issuer1";
|
|
|
Jwt jwt = createJwtClientRegistration();
|
|
|
OAuth2AccessToken jwtAccessToken = new OAuth2AccessToken(OAuth2AccessToken.TokenType.BEARER,
|
|
|
jwt.getTokenValue(), jwt.getIssuedAt(),
|
|
@@ -320,7 +312,7 @@ public class OidcClientRegistrationAuthenticationProviderTests {
|
|
|
// @formatter:on
|
|
|
|
|
|
OidcClientRegistrationAuthenticationToken authentication = new OidcClientRegistrationAuthenticationToken(
|
|
|
- issuer, principal, clientRegistration);
|
|
|
+ principal, clientRegistration);
|
|
|
|
|
|
assertThatThrownBy(() -> this.authenticationProvider.authenticate(authentication))
|
|
|
.isInstanceOf(OAuth2AuthenticationException.class)
|
|
@@ -332,7 +324,6 @@ public class OidcClientRegistrationAuthenticationProviderTests {
|
|
|
|
|
|
@Test
|
|
|
public void authenticateWhenClientRegistrationRequestAndValidAccessTokenThenReturnClientRegistration() {
|
|
|
- String issuer = "https://example.com/issuer1";
|
|
|
Jwt jwt = createJwtClientRegistration();
|
|
|
OAuth2AccessToken jwtAccessToken = new OAuth2AccessToken(OAuth2AccessToken.TokenType.BEARER,
|
|
|
jwt.getTokenValue(), jwt.getIssuedAt(),
|
|
@@ -359,8 +350,7 @@ public class OidcClientRegistrationAuthenticationProviderTests {
|
|
|
// @formatter:on
|
|
|
|
|
|
OidcClientRegistrationAuthenticationToken authentication = new OidcClientRegistrationAuthenticationToken(
|
|
|
- issuer, principal, clientRegistration);
|
|
|
-
|
|
|
+ principal, clientRegistration);
|
|
|
OidcClientRegistrationAuthenticationToken authenticationResult =
|
|
|
(OidcClientRegistrationAuthenticationToken) this.authenticationProvider.authenticate(authentication);
|
|
|
|
|
@@ -425,7 +415,7 @@ public class OidcClientRegistrationAuthenticationProviderTests {
|
|
|
assertThat(clientRegistrationResult.getIdTokenSignedResponseAlgorithm())
|
|
|
.isEqualTo(registeredClientResult.getTokenSettings().getIdTokenSignatureAlgorithm().getName());
|
|
|
|
|
|
- String expectedRegistrationClientUrl = UriComponentsBuilder.fromUriString(issuer)
|
|
|
+ String expectedRegistrationClientUrl = UriComponentsBuilder.fromUriString(this.providerSettings.getIssuer())
|
|
|
.path(this.providerSettings.getOidcClientRegistrationEndpoint())
|
|
|
.queryParam(OAuth2ParameterNames.CLIENT_ID, registeredClientResult.getClientId()).toUriString();
|
|
|
|
|
@@ -435,7 +425,6 @@ public class OidcClientRegistrationAuthenticationProviderTests {
|
|
|
|
|
|
@Test
|
|
|
public void authenticateWhenClientConfigurationRequestAndAccessTokenNotAuthorizedThenThrowOAuth2AuthenticationException() {
|
|
|
- String issuer = "https://example.com/issuer1";
|
|
|
Jwt jwt = createJwt(Collections.singleton("unauthorized.scope"));
|
|
|
OAuth2AccessToken jwtAccessToken = new OAuth2AccessToken(OAuth2AccessToken.TokenType.BEARER,
|
|
|
jwt.getTokenValue(), jwt.getIssuedAt(),
|
|
@@ -451,7 +440,7 @@ public class OidcClientRegistrationAuthenticationProviderTests {
|
|
|
jwt, AuthorityUtils.createAuthorityList("SCOPE_unauthorized.scope"));
|
|
|
|
|
|
OidcClientRegistrationAuthenticationToken authentication = new OidcClientRegistrationAuthenticationToken(
|
|
|
- issuer, principal, registeredClient.getClientId());
|
|
|
+ principal, registeredClient.getClientId());
|
|
|
|
|
|
assertThatThrownBy(() -> this.authenticationProvider.authenticate(authentication))
|
|
|
.isInstanceOf(OAuth2AuthenticationException.class)
|
|
@@ -463,7 +452,6 @@ public class OidcClientRegistrationAuthenticationProviderTests {
|
|
|
|
|
|
@Test
|
|
|
public void authenticateWhenClientConfigurationRequestAndAccessTokenContainsRequiredScopeAndAdditionalScopeThenThrowOAuth2AuthenticationException() {
|
|
|
- String issuer = "https://example.com/issuer1";
|
|
|
Jwt jwt = createJwt(new HashSet<>(Arrays.asList("client.read", "scope1")));
|
|
|
OAuth2AccessToken jwtAccessToken = new OAuth2AccessToken(OAuth2AccessToken.TokenType.BEARER,
|
|
|
jwt.getTokenValue(), jwt.getIssuedAt(),
|
|
@@ -479,7 +467,7 @@ public class OidcClientRegistrationAuthenticationProviderTests {
|
|
|
jwt, AuthorityUtils.createAuthorityList("SCOPE_client.read", "SCOPE_scope1"));
|
|
|
|
|
|
OidcClientRegistrationAuthenticationToken authentication = new OidcClientRegistrationAuthenticationToken(
|
|
|
- issuer, principal, registeredClient.getClientId());
|
|
|
+ principal, registeredClient.getClientId());
|
|
|
|
|
|
assertThatThrownBy(() -> this.authenticationProvider.authenticate(authentication))
|
|
|
.isInstanceOf(OAuth2AuthenticationException.class)
|
|
@@ -491,7 +479,6 @@ public class OidcClientRegistrationAuthenticationProviderTests {
|
|
|
|
|
|
@Test
|
|
|
public void authenticateWhenClientConfigurationRequestAndRegisteredClientNotFoundThenThrowOAuth2AuthenticationException() {
|
|
|
- String issuer = "https://example.com/issuer1";
|
|
|
Jwt jwt = createJwtClientConfiguration();
|
|
|
OAuth2AccessToken jwtAccessToken = new OAuth2AccessToken(OAuth2AccessToken.TokenType.BEARER,
|
|
|
jwt.getTokenValue(), jwt.getIssuedAt(),
|
|
@@ -507,7 +494,7 @@ public class OidcClientRegistrationAuthenticationProviderTests {
|
|
|
jwt, AuthorityUtils.createAuthorityList("SCOPE_client.read"));
|
|
|
|
|
|
OidcClientRegistrationAuthenticationToken authentication = new OidcClientRegistrationAuthenticationToken(
|
|
|
- issuer, principal, registeredClient.getClientId());
|
|
|
+ principal, registeredClient.getClientId());
|
|
|
|
|
|
assertThatThrownBy(() -> this.authenticationProvider.authenticate(authentication))
|
|
|
.isInstanceOf(OAuth2AuthenticationException.class)
|
|
@@ -521,7 +508,6 @@ public class OidcClientRegistrationAuthenticationProviderTests {
|
|
|
|
|
|
@Test
|
|
|
public void authenticateWhenClientConfigurationRequestClientIdNotEqualToAuthorizedClientThenThrowOAuth2AuthenticationException() {
|
|
|
- String issuer = "https://example.com/issuer1";
|
|
|
Jwt jwt = createJwtClientConfiguration();
|
|
|
OAuth2AccessToken jwtAccessToken = new OAuth2AccessToken(OAuth2AccessToken.TokenType.BEARER,
|
|
|
jwt.getTokenValue(), jwt.getIssuedAt(),
|
|
@@ -541,7 +527,7 @@ public class OidcClientRegistrationAuthenticationProviderTests {
|
|
|
jwt, AuthorityUtils.createAuthorityList("SCOPE_client.read"));
|
|
|
|
|
|
OidcClientRegistrationAuthenticationToken authentication = new OidcClientRegistrationAuthenticationToken(
|
|
|
- issuer, principal, registeredClient.getClientId());
|
|
|
+ principal, registeredClient.getClientId());
|
|
|
|
|
|
assertThatThrownBy(() -> this.authenticationProvider.authenticate(authentication))
|
|
|
.isInstanceOf(OAuth2AuthenticationException.class)
|
|
@@ -555,7 +541,6 @@ public class OidcClientRegistrationAuthenticationProviderTests {
|
|
|
|
|
|
@Test
|
|
|
public void authenticateWhenClientConfigurationRequestAndValidAccessTokenThenReturnClientRegistration() {
|
|
|
- String issuer = "https://example.com/issuer1";
|
|
|
Jwt jwt = createJwtClientConfiguration();
|
|
|
OAuth2AccessToken jwtAccessToken = new OAuth2AccessToken(OAuth2AccessToken.TokenType.BEARER,
|
|
|
jwt.getTokenValue(), jwt.getIssuedAt(),
|
|
@@ -575,7 +560,7 @@ public class OidcClientRegistrationAuthenticationProviderTests {
|
|
|
jwt, AuthorityUtils.createAuthorityList("SCOPE_client.read"));
|
|
|
|
|
|
OidcClientRegistrationAuthenticationToken authentication = new OidcClientRegistrationAuthenticationToken(
|
|
|
- issuer, principal, registeredClient.getClientId());
|
|
|
+ principal, registeredClient.getClientId());
|
|
|
|
|
|
OidcClientRegistrationAuthenticationToken authenticationResult =
|
|
|
(OidcClientRegistrationAuthenticationToken) this.authenticationProvider.authenticate(authentication);
|
|
@@ -612,7 +597,7 @@ public class OidcClientRegistrationAuthenticationProviderTests {
|
|
|
assertThat(clientRegistrationResult.getIdTokenSignedResponseAlgorithm())
|
|
|
.isEqualTo(registeredClient.getTokenSettings().getIdTokenSignatureAlgorithm().getName());
|
|
|
|
|
|
- String expectedRegistrationClientUrl = UriComponentsBuilder.fromUriString(issuer)
|
|
|
+ String expectedRegistrationClientUrl = UriComponentsBuilder.fromUriString(this.providerSettings.getIssuer())
|
|
|
.path(this.providerSettings.getOidcClientRegistrationEndpoint())
|
|
|
.queryParam(OAuth2ParameterNames.CLIENT_ID, registeredClient.getClientId()).toUriString();
|
|
|
|