|
@@ -1,5 +1,5 @@
|
|
/*
|
|
/*
|
|
- * Copyright 2020-2021 the original author or authors.
|
|
|
|
|
|
+ * Copyright 2020-2022 the original author or authors.
|
|
*
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* you may not use this file except in compliance with the License.
|
|
@@ -47,25 +47,30 @@ public class TestOAuth2Authorizations {
|
|
return authorization(registeredClient, Collections.emptyMap());
|
|
return authorization(registeredClient, Collections.emptyMap());
|
|
}
|
|
}
|
|
|
|
|
|
- public static OAuth2Authorization.Builder authorization(RegisteredClient registeredClient,
|
|
|
|
- OAuth2AccessToken accessToken, Map<String, Object> accessTokenClaims) {
|
|
|
|
- return authorization(registeredClient, accessToken, accessTokenClaims, Collections.emptyMap());
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
public static OAuth2Authorization.Builder authorization(RegisteredClient registeredClient,
|
|
public static OAuth2Authorization.Builder authorization(RegisteredClient registeredClient,
|
|
Map<String, Object> authorizationRequestAdditionalParameters) {
|
|
Map<String, Object> authorizationRequestAdditionalParameters) {
|
|
|
|
+ OAuth2AuthorizationCode authorizationCode = new OAuth2AuthorizationCode(
|
|
|
|
+ "code", Instant.now(), Instant.now().plusSeconds(120));
|
|
OAuth2AccessToken accessToken = new OAuth2AccessToken(
|
|
OAuth2AccessToken accessToken = new OAuth2AccessToken(
|
|
OAuth2AccessToken.TokenType.BEARER, "access-token", Instant.now(), Instant.now().plusSeconds(300));
|
|
OAuth2AccessToken.TokenType.BEARER, "access-token", Instant.now(), Instant.now().plusSeconds(300));
|
|
- return authorization(registeredClient, accessToken, Collections.emptyMap(), authorizationRequestAdditionalParameters);
|
|
|
|
|
|
+ return authorization(registeredClient, authorizationCode, accessToken, Collections.emptyMap(), authorizationRequestAdditionalParameters);
|
|
}
|
|
}
|
|
|
|
|
|
- private static OAuth2Authorization.Builder authorization(RegisteredClient registeredClient,
|
|
|
|
- OAuth2AccessToken accessToken, Map<String, Object> accessTokenClaims,
|
|
|
|
- Map<String, Object> authorizationRequestAdditionalParameters) {
|
|
|
|
|
|
+ public static OAuth2Authorization.Builder authorization(RegisteredClient registeredClient,
|
|
|
|
+ OAuth2AuthorizationCode authorizationCode) {
|
|
|
|
+ return authorization(registeredClient, authorizationCode, null, Collections.emptyMap(), Collections.emptyMap());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public static OAuth2Authorization.Builder authorization(RegisteredClient registeredClient,
|
|
|
|
+ OAuth2AccessToken accessToken, Map<String, Object> accessTokenClaims) {
|
|
OAuth2AuthorizationCode authorizationCode = new OAuth2AuthorizationCode(
|
|
OAuth2AuthorizationCode authorizationCode = new OAuth2AuthorizationCode(
|
|
"code", Instant.now(), Instant.now().plusSeconds(120));
|
|
"code", Instant.now(), Instant.now().plusSeconds(120));
|
|
- OAuth2RefreshToken refreshToken = new OAuth2RefreshToken(
|
|
|
|
- "refresh-token", Instant.now(), Instant.now().plus(1, ChronoUnit.HOURS));
|
|
|
|
|
|
+ return authorization(registeredClient, authorizationCode, accessToken, accessTokenClaims, Collections.emptyMap());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private static OAuth2Authorization.Builder authorization(RegisteredClient registeredClient,
|
|
|
|
+ OAuth2AuthorizationCode authorizationCode, OAuth2AccessToken accessToken,
|
|
|
|
+ Map<String, Object> accessTokenClaims, Map<String, Object> authorizationRequestAdditionalParameters) {
|
|
OAuth2AuthorizationRequest authorizationRequest = OAuth2AuthorizationRequest.authorizationCode()
|
|
OAuth2AuthorizationRequest authorizationRequest = OAuth2AuthorizationRequest.authorizationCode()
|
|
.authorizationUri("https://provider.com/oauth2/authorize")
|
|
.authorizationUri("https://provider.com/oauth2/authorize")
|
|
.clientId(registeredClient.getClientId())
|
|
.clientId(registeredClient.getClientId())
|
|
@@ -74,18 +79,25 @@ public class TestOAuth2Authorizations {
|
|
.additionalParameters(authorizationRequestAdditionalParameters)
|
|
.additionalParameters(authorizationRequestAdditionalParameters)
|
|
.state("state")
|
|
.state("state")
|
|
.build();
|
|
.build();
|
|
- return OAuth2Authorization.withRegisteredClient(registeredClient)
|
|
|
|
|
|
+ OAuth2Authorization.Builder builder = OAuth2Authorization.withRegisteredClient(registeredClient)
|
|
.id("id")
|
|
.id("id")
|
|
.principalName("principal")
|
|
.principalName("principal")
|
|
.authorizationGrantType(AuthorizationGrantType.AUTHORIZATION_CODE)
|
|
.authorizationGrantType(AuthorizationGrantType.AUTHORIZATION_CODE)
|
|
.token(authorizationCode)
|
|
.token(authorizationCode)
|
|
- .token(accessToken, (metadata) -> metadata.putAll(tokenMetadata(accessTokenClaims)))
|
|
|
|
- .refreshToken(refreshToken)
|
|
|
|
.attribute(OAuth2ParameterNames.STATE, "state")
|
|
.attribute(OAuth2ParameterNames.STATE, "state")
|
|
.attribute(OAuth2AuthorizationRequest.class.getName(), authorizationRequest)
|
|
.attribute(OAuth2AuthorizationRequest.class.getName(), authorizationRequest)
|
|
.attribute(Principal.class.getName(),
|
|
.attribute(Principal.class.getName(),
|
|
new TestingAuthenticationToken("principal", null, "ROLE_A", "ROLE_B"))
|
|
new TestingAuthenticationToken("principal", null, "ROLE_A", "ROLE_B"))
|
|
.attribute(OAuth2Authorization.AUTHORIZED_SCOPE_ATTRIBUTE_NAME, authorizationRequest.getScopes());
|
|
.attribute(OAuth2Authorization.AUTHORIZED_SCOPE_ATTRIBUTE_NAME, authorizationRequest.getScopes());
|
|
|
|
+ if (accessToken != null) {
|
|
|
|
+ OAuth2RefreshToken refreshToken = new OAuth2RefreshToken(
|
|
|
|
+ "refresh-token", Instant.now(), Instant.now().plus(1, ChronoUnit.HOURS));
|
|
|
|
+ builder
|
|
|
|
+ .token(accessToken, (metadata) -> metadata.putAll(tokenMetadata(accessTokenClaims)))
|
|
|
|
+ .refreshToken(refreshToken);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return builder;
|
|
}
|
|
}
|
|
|
|
|
|
private static Map<String, Object> tokenMetadata(Map<String, Object> tokenClaims) {
|
|
private static Map<String, Object> tokenMetadata(Map<String, Object> tokenClaims) {
|