|  | @@ -0,0 +1,498 @@
 | 
											
												
													
														|  | 
 |  | +/*
 | 
											
												
													
														|  | 
 |  | + * Copyright 2020-2024 the original author or authors.
 | 
											
												
													
														|  | 
 |  | + *
 | 
											
												
													
														|  | 
 |  | + * Licensed under the Apache License, Version 2.0 (the "License");
 | 
											
												
													
														|  | 
 |  | + * you may not use this file except in compliance with the License.
 | 
											
												
													
														|  | 
 |  | + * You may obtain a copy of the License at
 | 
											
												
													
														|  | 
 |  | + *
 | 
											
												
													
														|  | 
 |  | + *      https://www.apache.org/licenses/LICENSE-2.0
 | 
											
												
													
														|  | 
 |  | + *
 | 
											
												
													
														|  | 
 |  | + * Unless required by applicable law or agreed to in writing, software
 | 
											
												
													
														|  | 
 |  | + * distributed under the License is distributed on an "AS IS" BASIS,
 | 
											
												
													
														|  | 
 |  | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
											
												
													
														|  | 
 |  | + * See the License for the specific language governing permissions and
 | 
											
												
													
														|  | 
 |  | + * limitations under the License.
 | 
											
												
													
														|  | 
 |  | + */
 | 
											
												
													
														|  | 
 |  | +package sample.redis.service;
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +import java.security.Principal;
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +import sample.redis.entity.OAuth2AuthorizationCodeGrantAuthorization;
 | 
											
												
													
														|  | 
 |  | +import sample.redis.entity.OAuth2AuthorizationGrantAuthorization;
 | 
											
												
													
														|  | 
 |  | +import sample.redis.entity.OAuth2ClientCredentialsGrantAuthorization;
 | 
											
												
													
														|  | 
 |  | +import sample.redis.entity.OAuth2DeviceCodeGrantAuthorization;
 | 
											
												
													
														|  | 
 |  | +import sample.redis.entity.OAuth2RegisteredClient;
 | 
											
												
													
														|  | 
 |  | +import sample.redis.entity.OAuth2TokenExchangeGrantAuthorization;
 | 
											
												
													
														|  | 
 |  | +import sample.redis.entity.OAuth2UserConsent;
 | 
											
												
													
														|  | 
 |  | +import sample.redis.entity.OidcAuthorizationCodeGrantAuthorization;
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +import org.springframework.security.oauth2.core.AuthorizationGrantType;
 | 
											
												
													
														|  | 
 |  | +import org.springframework.security.oauth2.core.OAuth2AccessToken;
 | 
											
												
													
														|  | 
 |  | +import org.springframework.security.oauth2.core.OAuth2DeviceCode;
 | 
											
												
													
														|  | 
 |  | +import org.springframework.security.oauth2.core.OAuth2RefreshToken;
 | 
											
												
													
														|  | 
 |  | +import org.springframework.security.oauth2.core.OAuth2UserCode;
 | 
											
												
													
														|  | 
 |  | +import org.springframework.security.oauth2.core.endpoint.OAuth2AuthorizationRequest;
 | 
											
												
													
														|  | 
 |  | +import org.springframework.security.oauth2.core.endpoint.OAuth2ParameterNames;
 | 
											
												
													
														|  | 
 |  | +import org.springframework.security.oauth2.core.oidc.OidcIdToken;
 | 
											
												
													
														|  | 
 |  | +import org.springframework.security.oauth2.core.oidc.OidcScopes;
 | 
											
												
													
														|  | 
 |  | +import org.springframework.security.oauth2.server.authorization.OAuth2Authorization;
 | 
											
												
													
														|  | 
 |  | +import org.springframework.security.oauth2.server.authorization.OAuth2AuthorizationCode;
 | 
											
												
													
														|  | 
 |  | +import org.springframework.security.oauth2.server.authorization.OAuth2AuthorizationConsent;
 | 
											
												
													
														|  | 
 |  | +import org.springframework.security.oauth2.server.authorization.client.RegisteredClient;
 | 
											
												
													
														|  | 
 |  | +import org.springframework.security.oauth2.server.authorization.settings.ClientSettings;
 | 
											
												
													
														|  | 
 |  | +import org.springframework.security.oauth2.server.authorization.settings.OAuth2TokenFormat;
 | 
											
												
													
														|  | 
 |  | +import org.springframework.security.oauth2.server.authorization.settings.TokenSettings;
 | 
											
												
													
														|  | 
 |  | +import org.springframework.util.CollectionUtils;
 | 
											
												
													
														|  | 
 |  | +import org.springframework.util.StringUtils;
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +final class ModelMapper {
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	static OAuth2RegisteredClient convertOAuth2RegisteredClient(RegisteredClient registeredClient) {
 | 
											
												
													
														|  | 
 |  | +		OAuth2RegisteredClient.ClientSettings clientSettings = new OAuth2RegisteredClient.ClientSettings(
 | 
											
												
													
														|  | 
 |  | +				registeredClient.getClientSettings().isRequireProofKey(),
 | 
											
												
													
														|  | 
 |  | +				registeredClient.getClientSettings().isRequireAuthorizationConsent(),
 | 
											
												
													
														|  | 
 |  | +				registeredClient.getClientSettings().getJwkSetUrl(),
 | 
											
												
													
														|  | 
 |  | +				registeredClient.getClientSettings().getTokenEndpointAuthenticationSigningAlgorithm(),
 | 
											
												
													
														|  | 
 |  | +				registeredClient.getClientSettings().getX509CertificateSubjectDN());
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +		OAuth2RegisteredClient.TokenSettings tokenSettings = new OAuth2RegisteredClient.TokenSettings(
 | 
											
												
													
														|  | 
 |  | +				registeredClient.getTokenSettings().getAuthorizationCodeTimeToLive(),
 | 
											
												
													
														|  | 
 |  | +				registeredClient.getTokenSettings().getAccessTokenTimeToLive(),
 | 
											
												
													
														|  | 
 |  | +				registeredClient.getTokenSettings().getAccessTokenFormat(),
 | 
											
												
													
														|  | 
 |  | +				registeredClient.getTokenSettings().getDeviceCodeTimeToLive(),
 | 
											
												
													
														|  | 
 |  | +				registeredClient.getTokenSettings().isReuseRefreshTokens(),
 | 
											
												
													
														|  | 
 |  | +				registeredClient.getTokenSettings().getRefreshTokenTimeToLive(),
 | 
											
												
													
														|  | 
 |  | +				registeredClient.getTokenSettings().getIdTokenSignatureAlgorithm(),
 | 
											
												
													
														|  | 
 |  | +				registeredClient.getTokenSettings().isX509CertificateBoundAccessTokens());
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +		return new OAuth2RegisteredClient(registeredClient.getId(), registeredClient.getClientId(),
 | 
											
												
													
														|  | 
 |  | +				registeredClient.getClientIdIssuedAt(), registeredClient.getClientSecret(),
 | 
											
												
													
														|  | 
 |  | +				registeredClient.getClientSecretExpiresAt(), registeredClient.getClientName(),
 | 
											
												
													
														|  | 
 |  | +				registeredClient.getClientAuthenticationMethods(), registeredClient.getAuthorizationGrantTypes(),
 | 
											
												
													
														|  | 
 |  | +				registeredClient.getRedirectUris(), registeredClient.getPostLogoutRedirectUris(),
 | 
											
												
													
														|  | 
 |  | +				registeredClient.getScopes(), clientSettings, tokenSettings);
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	static OAuth2UserConsent convertOAuth2UserConsent(OAuth2AuthorizationConsent authorizationConsent) {
 | 
											
												
													
														|  | 
 |  | +		String id = authorizationConsent.getRegisteredClientId()
 | 
											
												
													
														|  | 
 |  | +			.concat("-")
 | 
											
												
													
														|  | 
 |  | +			.concat(authorizationConsent.getPrincipalName());
 | 
											
												
													
														|  | 
 |  | +		return new OAuth2UserConsent(id, authorizationConsent.getRegisteredClientId(),
 | 
											
												
													
														|  | 
 |  | +				authorizationConsent.getPrincipalName(), authorizationConsent.getAuthorities());
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	static OAuth2AuthorizationGrantAuthorization convertOAuth2AuthorizationGrantAuthorization(
 | 
											
												
													
														|  | 
 |  | +			OAuth2Authorization authorization) {
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +		if (AuthorizationGrantType.AUTHORIZATION_CODE.equals(authorization.getAuthorizationGrantType())) {
 | 
											
												
													
														|  | 
 |  | +			OAuth2AuthorizationRequest authorizationRequest = authorization
 | 
											
												
													
														|  | 
 |  | +				.getAttribute(OAuth2AuthorizationRequest.class.getName());
 | 
											
												
													
														|  | 
 |  | +			return authorizationRequest.getScopes().contains(OidcScopes.OPENID)
 | 
											
												
													
														|  | 
 |  | +					? convertOidcAuthorizationCodeGrantAuthorization(authorization)
 | 
											
												
													
														|  | 
 |  | +					: convertOAuth2AuthorizationCodeGrantAuthorization(authorization);
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +		else if (AuthorizationGrantType.CLIENT_CREDENTIALS.equals(authorization.getAuthorizationGrantType())) {
 | 
											
												
													
														|  | 
 |  | +			return convertOAuth2ClientCredentialsGrantAuthorization(authorization);
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +		else if (AuthorizationGrantType.DEVICE_CODE.equals(authorization.getAuthorizationGrantType())) {
 | 
											
												
													
														|  | 
 |  | +			return convertOAuth2DeviceCodeGrantAuthorization(authorization);
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +		else if (AuthorizationGrantType.TOKEN_EXCHANGE.equals(authorization.getAuthorizationGrantType())) {
 | 
											
												
													
														|  | 
 |  | +			return convertOAuth2TokenExchangeGrantAuthorization(authorization);
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +		return null;
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	static OidcAuthorizationCodeGrantAuthorization convertOidcAuthorizationCodeGrantAuthorization(
 | 
											
												
													
														|  | 
 |  | +			OAuth2Authorization authorization) {
 | 
											
												
													
														|  | 
 |  | +		OAuth2AuthorizationCodeGrantAuthorization.AuthorizationCode authorizationCode = extractAuthorizationCode(
 | 
											
												
													
														|  | 
 |  | +				authorization);
 | 
											
												
													
														|  | 
 |  | +		OAuth2AuthorizationGrantAuthorization.AccessToken accessToken = extractAccessToken(authorization);
 | 
											
												
													
														|  | 
 |  | +		OAuth2AuthorizationGrantAuthorization.RefreshToken refreshToken = extractRefreshToken(authorization);
 | 
											
												
													
														|  | 
 |  | +		OidcAuthorizationCodeGrantAuthorization.IdToken idToken = extractIdToken(authorization);
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +		return new OidcAuthorizationCodeGrantAuthorization(authorization.getId(), authorization.getRegisteredClientId(),
 | 
											
												
													
														|  | 
 |  | +				authorization.getPrincipalName(), authorization.getAuthorizedScopes(), accessToken, refreshToken,
 | 
											
												
													
														|  | 
 |  | +				authorization.getAttribute(Principal.class.getName()),
 | 
											
												
													
														|  | 
 |  | +				authorization.getAttribute(OAuth2AuthorizationRequest.class.getName()), authorizationCode,
 | 
											
												
													
														|  | 
 |  | +				authorization.getAttribute(OAuth2ParameterNames.STATE), idToken);
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	static OAuth2AuthorizationCodeGrantAuthorization convertOAuth2AuthorizationCodeGrantAuthorization(
 | 
											
												
													
														|  | 
 |  | +			OAuth2Authorization authorization) {
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +		OAuth2AuthorizationCodeGrantAuthorization.AuthorizationCode authorizationCode = extractAuthorizationCode(
 | 
											
												
													
														|  | 
 |  | +				authorization);
 | 
											
												
													
														|  | 
 |  | +		OAuth2AuthorizationGrantAuthorization.AccessToken accessToken = extractAccessToken(authorization);
 | 
											
												
													
														|  | 
 |  | +		OAuth2AuthorizationGrantAuthorization.RefreshToken refreshToken = extractRefreshToken(authorization);
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +		return new OAuth2AuthorizationCodeGrantAuthorization(authorization.getId(),
 | 
											
												
													
														|  | 
 |  | +				authorization.getRegisteredClientId(), authorization.getPrincipalName(),
 | 
											
												
													
														|  | 
 |  | +				authorization.getAuthorizedScopes(), accessToken, refreshToken,
 | 
											
												
													
														|  | 
 |  | +				authorization.getAttribute(Principal.class.getName()),
 | 
											
												
													
														|  | 
 |  | +				authorization.getAttribute(OAuth2AuthorizationRequest.class.getName()), authorizationCode,
 | 
											
												
													
														|  | 
 |  | +				authorization.getAttribute(OAuth2ParameterNames.STATE));
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	static OAuth2ClientCredentialsGrantAuthorization convertOAuth2ClientCredentialsGrantAuthorization(
 | 
											
												
													
														|  | 
 |  | +			OAuth2Authorization authorization) {
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +		OAuth2AuthorizationGrantAuthorization.AccessToken accessToken = extractAccessToken(authorization);
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +		return new OAuth2ClientCredentialsGrantAuthorization(authorization.getId(),
 | 
											
												
													
														|  | 
 |  | +				authorization.getRegisteredClientId(), authorization.getPrincipalName(),
 | 
											
												
													
														|  | 
 |  | +				authorization.getAuthorizedScopes(), accessToken);
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	static OAuth2DeviceCodeGrantAuthorization convertOAuth2DeviceCodeGrantAuthorization(
 | 
											
												
													
														|  | 
 |  | +			OAuth2Authorization authorization) {
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +		OAuth2AuthorizationGrantAuthorization.AccessToken accessToken = extractAccessToken(authorization);
 | 
											
												
													
														|  | 
 |  | +		OAuth2AuthorizationGrantAuthorization.RefreshToken refreshToken = extractRefreshToken(authorization);
 | 
											
												
													
														|  | 
 |  | +		OAuth2DeviceCodeGrantAuthorization.DeviceCode deviceCode = extractDeviceCode(authorization);
 | 
											
												
													
														|  | 
 |  | +		OAuth2DeviceCodeGrantAuthorization.UserCode userCode = extractUserCode(authorization);
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +		return new OAuth2DeviceCodeGrantAuthorization(authorization.getId(), authorization.getRegisteredClientId(),
 | 
											
												
													
														|  | 
 |  | +				authorization.getPrincipalName(), authorization.getAuthorizedScopes(), accessToken, refreshToken,
 | 
											
												
													
														|  | 
 |  | +				authorization.getAttribute(Principal.class.getName()), deviceCode, userCode,
 | 
											
												
													
														|  | 
 |  | +				authorization.getAttribute(OAuth2ParameterNames.SCOPE),
 | 
											
												
													
														|  | 
 |  | +				authorization.getAttribute(OAuth2ParameterNames.STATE));
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	static OAuth2TokenExchangeGrantAuthorization convertOAuth2TokenExchangeGrantAuthorization(
 | 
											
												
													
														|  | 
 |  | +			OAuth2Authorization authorization) {
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +		OAuth2AuthorizationGrantAuthorization.AccessToken accessToken = extractAccessToken(authorization);
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +		return new OAuth2TokenExchangeGrantAuthorization(authorization.getId(), authorization.getRegisteredClientId(),
 | 
											
												
													
														|  | 
 |  | +				authorization.getPrincipalName(), authorization.getAuthorizedScopes(), accessToken);
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	static OAuth2AuthorizationCodeGrantAuthorization.AuthorizationCode extractAuthorizationCode(
 | 
											
												
													
														|  | 
 |  | +			OAuth2Authorization authorization) {
 | 
											
												
													
														|  | 
 |  | +		OAuth2AuthorizationCodeGrantAuthorization.AuthorizationCode authorizationCode = null;
 | 
											
												
													
														|  | 
 |  | +		if (authorization.getToken(OAuth2AuthorizationCode.class) != null) {
 | 
											
												
													
														|  | 
 |  | +			OAuth2Authorization.Token<OAuth2AuthorizationCode> oauth2AuthorizationCode = authorization
 | 
											
												
													
														|  | 
 |  | +				.getToken(OAuth2AuthorizationCode.class);
 | 
											
												
													
														|  | 
 |  | +			authorizationCode = new OAuth2AuthorizationCodeGrantAuthorization.AuthorizationCode(
 | 
											
												
													
														|  | 
 |  | +					oauth2AuthorizationCode.getToken().getTokenValue(),
 | 
											
												
													
														|  | 
 |  | +					oauth2AuthorizationCode.getToken().getIssuedAt(), oauth2AuthorizationCode.getToken().getExpiresAt(),
 | 
											
												
													
														|  | 
 |  | +					oauth2AuthorizationCode.isInvalidated());
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +		return authorizationCode;
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	static OAuth2AuthorizationGrantAuthorization.AccessToken extractAccessToken(OAuth2Authorization authorization) {
 | 
											
												
													
														|  | 
 |  | +		OAuth2AuthorizationGrantAuthorization.AccessToken accessToken = null;
 | 
											
												
													
														|  | 
 |  | +		if (authorization.getAccessToken() != null) {
 | 
											
												
													
														|  | 
 |  | +			OAuth2Authorization.Token<OAuth2AccessToken> oauth2AccessToken = authorization.getAccessToken();
 | 
											
												
													
														|  | 
 |  | +			OAuth2TokenFormat tokenFormat = null;
 | 
											
												
													
														|  | 
 |  | +			if (OAuth2TokenFormat.SELF_CONTAINED.getValue()
 | 
											
												
													
														|  | 
 |  | +				.equals(oauth2AccessToken.getMetadata(OAuth2TokenFormat.class.getName()))) {
 | 
											
												
													
														|  | 
 |  | +				tokenFormat = OAuth2TokenFormat.SELF_CONTAINED;
 | 
											
												
													
														|  | 
 |  | +			}
 | 
											
												
													
														|  | 
 |  | +			else if (OAuth2TokenFormat.REFERENCE.getValue()
 | 
											
												
													
														|  | 
 |  | +				.equals(oauth2AccessToken.getMetadata(OAuth2TokenFormat.class.getName()))) {
 | 
											
												
													
														|  | 
 |  | +				tokenFormat = OAuth2TokenFormat.REFERENCE;
 | 
											
												
													
														|  | 
 |  | +			}
 | 
											
												
													
														|  | 
 |  | +			accessToken = new OAuth2AuthorizationGrantAuthorization.AccessToken(
 | 
											
												
													
														|  | 
 |  | +					oauth2AccessToken.getToken().getTokenValue(), oauth2AccessToken.getToken().getIssuedAt(),
 | 
											
												
													
														|  | 
 |  | +					oauth2AccessToken.getToken().getExpiresAt(), oauth2AccessToken.isInvalidated(),
 | 
											
												
													
														|  | 
 |  | +					oauth2AccessToken.getToken().getTokenType(), oauth2AccessToken.getToken().getScopes(), tokenFormat,
 | 
											
												
													
														|  | 
 |  | +					new OAuth2AuthorizationGrantAuthorization.ClaimsHolder(oauth2AccessToken.getClaims()));
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +		return accessToken;
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	static OAuth2AuthorizationGrantAuthorization.RefreshToken extractRefreshToken(OAuth2Authorization authorization) {
 | 
											
												
													
														|  | 
 |  | +		OAuth2AuthorizationGrantAuthorization.RefreshToken refreshToken = null;
 | 
											
												
													
														|  | 
 |  | +		if (authorization.getRefreshToken() != null) {
 | 
											
												
													
														|  | 
 |  | +			OAuth2Authorization.Token<OAuth2RefreshToken> oauth2RefreshToken = authorization.getRefreshToken();
 | 
											
												
													
														|  | 
 |  | +			refreshToken = new OAuth2AuthorizationGrantAuthorization.RefreshToken(
 | 
											
												
													
														|  | 
 |  | +					oauth2RefreshToken.getToken().getTokenValue(), oauth2RefreshToken.getToken().getIssuedAt(),
 | 
											
												
													
														|  | 
 |  | +					oauth2RefreshToken.getToken().getExpiresAt(), oauth2RefreshToken.isInvalidated());
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +		return refreshToken;
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	static OidcAuthorizationCodeGrantAuthorization.IdToken extractIdToken(OAuth2Authorization authorization) {
 | 
											
												
													
														|  | 
 |  | +		OidcAuthorizationCodeGrantAuthorization.IdToken idToken = null;
 | 
											
												
													
														|  | 
 |  | +		if (authorization.getToken(OidcIdToken.class) != null) {
 | 
											
												
													
														|  | 
 |  | +			OAuth2Authorization.Token<OidcIdToken> oidcIdToken = authorization.getToken(OidcIdToken.class);
 | 
											
												
													
														|  | 
 |  | +			idToken = new OidcAuthorizationCodeGrantAuthorization.IdToken(oidcIdToken.getToken().getTokenValue(),
 | 
											
												
													
														|  | 
 |  | +					oidcIdToken.getToken().getIssuedAt(), oidcIdToken.getToken().getExpiresAt(),
 | 
											
												
													
														|  | 
 |  | +					oidcIdToken.isInvalidated(),
 | 
											
												
													
														|  | 
 |  | +					new OAuth2AuthorizationGrantAuthorization.ClaimsHolder(oidcIdToken.getClaims()));
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +		return idToken;
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	static OAuth2DeviceCodeGrantAuthorization.DeviceCode extractDeviceCode(OAuth2Authorization authorization) {
 | 
											
												
													
														|  | 
 |  | +		OAuth2DeviceCodeGrantAuthorization.DeviceCode deviceCode = null;
 | 
											
												
													
														|  | 
 |  | +		if (authorization.getToken(OAuth2DeviceCode.class) != null) {
 | 
											
												
													
														|  | 
 |  | +			OAuth2Authorization.Token<OAuth2DeviceCode> oauth2DeviceCode = authorization
 | 
											
												
													
														|  | 
 |  | +				.getToken(OAuth2DeviceCode.class);
 | 
											
												
													
														|  | 
 |  | +			deviceCode = new OAuth2DeviceCodeGrantAuthorization.DeviceCode(oauth2DeviceCode.getToken().getTokenValue(),
 | 
											
												
													
														|  | 
 |  | +					oauth2DeviceCode.getToken().getIssuedAt(), oauth2DeviceCode.getToken().getExpiresAt(),
 | 
											
												
													
														|  | 
 |  | +					oauth2DeviceCode.isInvalidated());
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +		return deviceCode;
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	static OAuth2DeviceCodeGrantAuthorization.UserCode extractUserCode(OAuth2Authorization authorization) {
 | 
											
												
													
														|  | 
 |  | +		OAuth2DeviceCodeGrantAuthorization.UserCode userCode = null;
 | 
											
												
													
														|  | 
 |  | +		if (authorization.getToken(OAuth2UserCode.class) != null) {
 | 
											
												
													
														|  | 
 |  | +			OAuth2Authorization.Token<OAuth2UserCode> oauth2UserCode = authorization.getToken(OAuth2UserCode.class);
 | 
											
												
													
														|  | 
 |  | +			userCode = new OAuth2DeviceCodeGrantAuthorization.UserCode(oauth2UserCode.getToken().getTokenValue(),
 | 
											
												
													
														|  | 
 |  | +					oauth2UserCode.getToken().getIssuedAt(), oauth2UserCode.getToken().getExpiresAt(),
 | 
											
												
													
														|  | 
 |  | +					oauth2UserCode.isInvalidated());
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +		return userCode;
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	static RegisteredClient convertRegisteredClient(OAuth2RegisteredClient oauth2RegisteredClient) {
 | 
											
												
													
														|  | 
 |  | +		ClientSettings.Builder clientSettingsBuilder = ClientSettings.builder()
 | 
											
												
													
														|  | 
 |  | +			.requireProofKey(oauth2RegisteredClient.getClientSettings().isRequireProofKey())
 | 
											
												
													
														|  | 
 |  | +			.requireAuthorizationConsent(oauth2RegisteredClient.getClientSettings().isRequireAuthorizationConsent());
 | 
											
												
													
														|  | 
 |  | +		if (StringUtils.hasText(oauth2RegisteredClient.getClientSettings().getJwkSetUrl())) {
 | 
											
												
													
														|  | 
 |  | +			clientSettingsBuilder.jwkSetUrl(oauth2RegisteredClient.getClientSettings().getJwkSetUrl());
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +		if (oauth2RegisteredClient.getClientSettings().getTokenEndpointAuthenticationSigningAlgorithm() != null) {
 | 
											
												
													
														|  | 
 |  | +			clientSettingsBuilder.tokenEndpointAuthenticationSigningAlgorithm(
 | 
											
												
													
														|  | 
 |  | +					oauth2RegisteredClient.getClientSettings().getTokenEndpointAuthenticationSigningAlgorithm());
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +		if (StringUtils.hasText(oauth2RegisteredClient.getClientSettings().getX509CertificateSubjectDN())) {
 | 
											
												
													
														|  | 
 |  | +			clientSettingsBuilder
 | 
											
												
													
														|  | 
 |  | +				.x509CertificateSubjectDN(oauth2RegisteredClient.getClientSettings().getX509CertificateSubjectDN());
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +		ClientSettings clientSettings = clientSettingsBuilder.build();
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +		TokenSettings.Builder tokenSettingsBuilder = TokenSettings.builder();
 | 
											
												
													
														|  | 
 |  | +		if (oauth2RegisteredClient.getTokenSettings().getAuthorizationCodeTimeToLive() != null) {
 | 
											
												
													
														|  | 
 |  | +			tokenSettingsBuilder.authorizationCodeTimeToLive(
 | 
											
												
													
														|  | 
 |  | +					oauth2RegisteredClient.getTokenSettings().getAuthorizationCodeTimeToLive());
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +		if (oauth2RegisteredClient.getTokenSettings().getAccessTokenTimeToLive() != null) {
 | 
											
												
													
														|  | 
 |  | +			tokenSettingsBuilder
 | 
											
												
													
														|  | 
 |  | +				.accessTokenTimeToLive(oauth2RegisteredClient.getTokenSettings().getAccessTokenTimeToLive());
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +		if (oauth2RegisteredClient.getTokenSettings().getAccessTokenFormat() != null) {
 | 
											
												
													
														|  | 
 |  | +			tokenSettingsBuilder.accessTokenFormat(oauth2RegisteredClient.getTokenSettings().getAccessTokenFormat());
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +		if (oauth2RegisteredClient.getTokenSettings().getDeviceCodeTimeToLive() != null) {
 | 
											
												
													
														|  | 
 |  | +			tokenSettingsBuilder
 | 
											
												
													
														|  | 
 |  | +				.deviceCodeTimeToLive(oauth2RegisteredClient.getTokenSettings().getDeviceCodeTimeToLive());
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +		tokenSettingsBuilder.reuseRefreshTokens(oauth2RegisteredClient.getTokenSettings().isReuseRefreshTokens());
 | 
											
												
													
														|  | 
 |  | +		if (oauth2RegisteredClient.getTokenSettings().getRefreshTokenTimeToLive() != null) {
 | 
											
												
													
														|  | 
 |  | +			tokenSettingsBuilder
 | 
											
												
													
														|  | 
 |  | +				.refreshTokenTimeToLive(oauth2RegisteredClient.getTokenSettings().getRefreshTokenTimeToLive());
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +		if (oauth2RegisteredClient.getTokenSettings().getIdTokenSignatureAlgorithm() != null) {
 | 
											
												
													
														|  | 
 |  | +			tokenSettingsBuilder
 | 
											
												
													
														|  | 
 |  | +				.idTokenSignatureAlgorithm(oauth2RegisteredClient.getTokenSettings().getIdTokenSignatureAlgorithm());
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +		tokenSettingsBuilder.x509CertificateBoundAccessTokens(
 | 
											
												
													
														|  | 
 |  | +				oauth2RegisteredClient.getTokenSettings().isX509CertificateBoundAccessTokens());
 | 
											
												
													
														|  | 
 |  | +		TokenSettings tokenSettings = tokenSettingsBuilder.build();
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +		RegisteredClient.Builder registeredClientBuilder = RegisteredClient.withId(oauth2RegisteredClient.getId())
 | 
											
												
													
														|  | 
 |  | +				.clientId(oauth2RegisteredClient.getClientId())
 | 
											
												
													
														|  | 
 |  | +				.clientIdIssuedAt(oauth2RegisteredClient.getClientIdIssuedAt())
 | 
											
												
													
														|  | 
 |  | +				.clientSecret(oauth2RegisteredClient.getClientSecret())
 | 
											
												
													
														|  | 
 |  | +				.clientSecretExpiresAt(oauth2RegisteredClient.getClientSecretExpiresAt())
 | 
											
												
													
														|  | 
 |  | +				.clientName(oauth2RegisteredClient.getClientName())
 | 
											
												
													
														|  | 
 |  | +				.clientAuthenticationMethods((clientAuthenticationMethods) -> clientAuthenticationMethods
 | 
											
												
													
														|  | 
 |  | +						.addAll(oauth2RegisteredClient.getClientAuthenticationMethods()))
 | 
											
												
													
														|  | 
 |  | +				.authorizationGrantTypes((authorizationGrantTypes) -> authorizationGrantTypes
 | 
											
												
													
														|  | 
 |  | +						.addAll(oauth2RegisteredClient.getAuthorizationGrantTypes()))
 | 
											
												
													
														|  | 
 |  | +				.clientSettings(clientSettings)
 | 
											
												
													
														|  | 
 |  | +				.tokenSettings(tokenSettings);
 | 
											
												
													
														|  | 
 |  | +		if (!CollectionUtils.isEmpty(oauth2RegisteredClient.getRedirectUris())) {
 | 
											
												
													
														|  | 
 |  | +			registeredClientBuilder.redirectUris((redirectUris) -> redirectUris.addAll(oauth2RegisteredClient.getRedirectUris()));
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +		if (!CollectionUtils.isEmpty(oauth2RegisteredClient.getPostLogoutRedirectUris())) {
 | 
											
												
													
														|  | 
 |  | +			registeredClientBuilder.postLogoutRedirectUris((postLogoutRedirectUris) ->
 | 
											
												
													
														|  | 
 |  | +					postLogoutRedirectUris.addAll(oauth2RegisteredClient.getPostLogoutRedirectUris()));
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +		if (!CollectionUtils.isEmpty(oauth2RegisteredClient.getScopes())) {
 | 
											
												
													
														|  | 
 |  | +			registeredClientBuilder.scopes((scopes) -> scopes.addAll(oauth2RegisteredClient.getScopes()));
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +		return registeredClientBuilder.build();
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	static OAuth2AuthorizationConsent convertOAuth2AuthorizationConsent(OAuth2UserConsent userConsent) {
 | 
											
												
													
														|  | 
 |  | +		return OAuth2AuthorizationConsent.withId(userConsent.getRegisteredClientId(), userConsent.getPrincipalName())
 | 
											
												
													
														|  | 
 |  | +			.authorities((authorities) -> authorities.addAll(userConsent.getAuthorities()))
 | 
											
												
													
														|  | 
 |  | +			.build();
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	static void mapOAuth2AuthorizationGrantAuthorization(
 | 
											
												
													
														|  | 
 |  | +			OAuth2AuthorizationGrantAuthorization authorizationGrantAuthorization,
 | 
											
												
													
														|  | 
 |  | +			OAuth2Authorization.Builder builder) {
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +		if (authorizationGrantAuthorization instanceof OidcAuthorizationCodeGrantAuthorization authorizationGrant) {
 | 
											
												
													
														|  | 
 |  | +			mapOidcAuthorizationCodeGrantAuthorization(authorizationGrant, builder);
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +		else if (authorizationGrantAuthorization instanceof OAuth2AuthorizationCodeGrantAuthorization authorizationGrant) {
 | 
											
												
													
														|  | 
 |  | +			mapOAuth2AuthorizationCodeGrantAuthorization(authorizationGrant, builder);
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +		else if (authorizationGrantAuthorization instanceof OAuth2ClientCredentialsGrantAuthorization authorizationGrant) {
 | 
											
												
													
														|  | 
 |  | +			mapOAuth2ClientCredentialsGrantAuthorization(authorizationGrant, builder);
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +		else if (authorizationGrantAuthorization instanceof OAuth2DeviceCodeGrantAuthorization authorizationGrant) {
 | 
											
												
													
														|  | 
 |  | +			mapOAuth2DeviceCodeGrantAuthorization(authorizationGrant, builder);
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +		else if (authorizationGrantAuthorization instanceof OAuth2TokenExchangeGrantAuthorization authorizationGrant) {
 | 
											
												
													
														|  | 
 |  | +			mapOAuth2TokenExchangeGrantAuthorization(authorizationGrant, builder);
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	static void mapOidcAuthorizationCodeGrantAuthorization(
 | 
											
												
													
														|  | 
 |  | +			OidcAuthorizationCodeGrantAuthorization authorizationCodeGrantAuthorization,
 | 
											
												
													
														|  | 
 |  | +			OAuth2Authorization.Builder builder) {
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +		mapOAuth2AuthorizationCodeGrantAuthorization(authorizationCodeGrantAuthorization, builder);
 | 
											
												
													
														|  | 
 |  | +		mapIdToken(authorizationCodeGrantAuthorization.getIdToken(), builder);
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	static void mapOAuth2AuthorizationCodeGrantAuthorization(
 | 
											
												
													
														|  | 
 |  | +			OAuth2AuthorizationCodeGrantAuthorization authorizationCodeGrantAuthorization,
 | 
											
												
													
														|  | 
 |  | +			OAuth2Authorization.Builder builder) {
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +		builder.id(authorizationCodeGrantAuthorization.getId())
 | 
											
												
													
														|  | 
 |  | +			.principalName(authorizationCodeGrantAuthorization.getPrincipalName())
 | 
											
												
													
														|  | 
 |  | +			.authorizationGrantType(AuthorizationGrantType.AUTHORIZATION_CODE)
 | 
											
												
													
														|  | 
 |  | +			.authorizedScopes(authorizationCodeGrantAuthorization.getAuthorizedScopes())
 | 
											
												
													
														|  | 
 |  | +			.attribute(Principal.class.getName(), authorizationCodeGrantAuthorization.getPrincipal())
 | 
											
												
													
														|  | 
 |  | +			.attribute(OAuth2AuthorizationRequest.class.getName(),
 | 
											
												
													
														|  | 
 |  | +					authorizationCodeGrantAuthorization.getAuthorizationRequest());
 | 
											
												
													
														|  | 
 |  | +		if (StringUtils.hasText(authorizationCodeGrantAuthorization.getState())) {
 | 
											
												
													
														|  | 
 |  | +			builder.attribute(OAuth2ParameterNames.STATE, authorizationCodeGrantAuthorization.getState());
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +		mapAuthorizationCode(authorizationCodeGrantAuthorization.getAuthorizationCode(), builder);
 | 
											
												
													
														|  | 
 |  | +		mapAccessToken(authorizationCodeGrantAuthorization.getAccessToken(), builder);
 | 
											
												
													
														|  | 
 |  | +		mapRefreshToken(authorizationCodeGrantAuthorization.getRefreshToken(), builder);
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	static void mapOAuth2ClientCredentialsGrantAuthorization(
 | 
											
												
													
														|  | 
 |  | +			OAuth2ClientCredentialsGrantAuthorization clientCredentialsGrantAuthorization,
 | 
											
												
													
														|  | 
 |  | +			OAuth2Authorization.Builder builder) {
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +		builder.id(clientCredentialsGrantAuthorization.getId())
 | 
											
												
													
														|  | 
 |  | +			.principalName(clientCredentialsGrantAuthorization.getPrincipalName())
 | 
											
												
													
														|  | 
 |  | +			.authorizationGrantType(AuthorizationGrantType.CLIENT_CREDENTIALS)
 | 
											
												
													
														|  | 
 |  | +			.authorizedScopes(clientCredentialsGrantAuthorization.getAuthorizedScopes());
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +		mapAccessToken(clientCredentialsGrantAuthorization.getAccessToken(), builder);
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	static void mapOAuth2DeviceCodeGrantAuthorization(OAuth2DeviceCodeGrantAuthorization deviceCodeGrantAuthorization,
 | 
											
												
													
														|  | 
 |  | +			OAuth2Authorization.Builder builder) {
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +		builder.id(deviceCodeGrantAuthorization.getId())
 | 
											
												
													
														|  | 
 |  | +			.principalName(deviceCodeGrantAuthorization.getPrincipalName())
 | 
											
												
													
														|  | 
 |  | +			.authorizationGrantType(AuthorizationGrantType.DEVICE_CODE)
 | 
											
												
													
														|  | 
 |  | +			.authorizedScopes(deviceCodeGrantAuthorization.getAuthorizedScopes());
 | 
											
												
													
														|  | 
 |  | +		if (deviceCodeGrantAuthorization.getPrincipal() != null) {
 | 
											
												
													
														|  | 
 |  | +			builder.attribute(Principal.class.getName(), deviceCodeGrantAuthorization.getPrincipal());
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +		if (deviceCodeGrantAuthorization.getRequestedScopes() != null) {
 | 
											
												
													
														|  | 
 |  | +			builder.attribute(OAuth2ParameterNames.SCOPE, deviceCodeGrantAuthorization.getRequestedScopes());
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +		if (StringUtils.hasText(deviceCodeGrantAuthorization.getDeviceState())) {
 | 
											
												
													
														|  | 
 |  | +			builder.attribute(OAuth2ParameterNames.STATE, deviceCodeGrantAuthorization.getDeviceState());
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +		mapAccessToken(deviceCodeGrantAuthorization.getAccessToken(), builder);
 | 
											
												
													
														|  | 
 |  | +		mapRefreshToken(deviceCodeGrantAuthorization.getRefreshToken(), builder);
 | 
											
												
													
														|  | 
 |  | +		mapDeviceCode(deviceCodeGrantAuthorization.getDeviceCode(), builder);
 | 
											
												
													
														|  | 
 |  | +		mapUserCode(deviceCodeGrantAuthorization.getUserCode(), builder);
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	static void mapOAuth2TokenExchangeGrantAuthorization(
 | 
											
												
													
														|  | 
 |  | +			OAuth2TokenExchangeGrantAuthorization tokenExchangeGrantAuthorization,
 | 
											
												
													
														|  | 
 |  | +			OAuth2Authorization.Builder builder) {
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +		builder.id(tokenExchangeGrantAuthorization.getId())
 | 
											
												
													
														|  | 
 |  | +			.principalName(tokenExchangeGrantAuthorization.getPrincipalName())
 | 
											
												
													
														|  | 
 |  | +			.authorizationGrantType(AuthorizationGrantType.TOKEN_EXCHANGE)
 | 
											
												
													
														|  | 
 |  | +			.authorizedScopes(tokenExchangeGrantAuthorization.getAuthorizedScopes());
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +		mapAccessToken(tokenExchangeGrantAuthorization.getAccessToken(), builder);
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	static void mapAuthorizationCode(OAuth2AuthorizationCodeGrantAuthorization.AuthorizationCode authorizationCode,
 | 
											
												
													
														|  | 
 |  | +			OAuth2Authorization.Builder builder) {
 | 
											
												
													
														|  | 
 |  | +		if (authorizationCode == null) {
 | 
											
												
													
														|  | 
 |  | +			return;
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +		OAuth2AuthorizationCode oauth2AuthorizationCode = new OAuth2AuthorizationCode(authorizationCode.getTokenValue(),
 | 
											
												
													
														|  | 
 |  | +				authorizationCode.getIssuedAt(), authorizationCode.getExpiresAt());
 | 
											
												
													
														|  | 
 |  | +		builder.token(oauth2AuthorizationCode, (metadata) -> metadata
 | 
											
												
													
														|  | 
 |  | +			.put(OAuth2Authorization.Token.INVALIDATED_METADATA_NAME, authorizationCode.isInvalidated()));
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	static void mapAccessToken(OAuth2AuthorizationGrantAuthorization.AccessToken accessToken,
 | 
											
												
													
														|  | 
 |  | +			OAuth2Authorization.Builder builder) {
 | 
											
												
													
														|  | 
 |  | +		if (accessToken == null) {
 | 
											
												
													
														|  | 
 |  | +			return;
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +		OAuth2AccessToken oauth2AccessToken = new OAuth2AccessToken(accessToken.getTokenType(),
 | 
											
												
													
														|  | 
 |  | +				accessToken.getTokenValue(), accessToken.getIssuedAt(), accessToken.getExpiresAt(),
 | 
											
												
													
														|  | 
 |  | +				accessToken.getScopes());
 | 
											
												
													
														|  | 
 |  | +		builder.token(oauth2AccessToken, (metadata) -> {
 | 
											
												
													
														|  | 
 |  | +			metadata.put(OAuth2Authorization.Token.INVALIDATED_METADATA_NAME, accessToken.isInvalidated());
 | 
											
												
													
														|  | 
 |  | +			metadata.put(OAuth2Authorization.Token.CLAIMS_METADATA_NAME, accessToken.getClaims().getClaims());
 | 
											
												
													
														|  | 
 |  | +			metadata.put(OAuth2TokenFormat.class.getName(), accessToken.getTokenFormat().getValue());
 | 
											
												
													
														|  | 
 |  | +		});
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	static void mapRefreshToken(OAuth2AuthorizationGrantAuthorization.RefreshToken refreshToken,
 | 
											
												
													
														|  | 
 |  | +			OAuth2Authorization.Builder builder) {
 | 
											
												
													
														|  | 
 |  | +		if (refreshToken == null) {
 | 
											
												
													
														|  | 
 |  | +			return;
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +		OAuth2RefreshToken oauth2RefreshToken = new OAuth2RefreshToken(refreshToken.getTokenValue(),
 | 
											
												
													
														|  | 
 |  | +				refreshToken.getIssuedAt(), refreshToken.getExpiresAt());
 | 
											
												
													
														|  | 
 |  | +		builder.token(oauth2RefreshToken, (metadata) -> metadata
 | 
											
												
													
														|  | 
 |  | +			.put(OAuth2Authorization.Token.INVALIDATED_METADATA_NAME, refreshToken.isInvalidated()));
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	static void mapIdToken(OidcAuthorizationCodeGrantAuthorization.IdToken idToken,
 | 
											
												
													
														|  | 
 |  | +			OAuth2Authorization.Builder builder) {
 | 
											
												
													
														|  | 
 |  | +		if (idToken == null) {
 | 
											
												
													
														|  | 
 |  | +			return;
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +		OidcIdToken oidcIdToken = new OidcIdToken(idToken.getTokenValue(), idToken.getIssuedAt(),
 | 
											
												
													
														|  | 
 |  | +				idToken.getExpiresAt(), idToken.getClaims().getClaims());
 | 
											
												
													
														|  | 
 |  | +		builder.token(oidcIdToken, (metadata) -> {
 | 
											
												
													
														|  | 
 |  | +			metadata.put(OAuth2Authorization.Token.INVALIDATED_METADATA_NAME, idToken.isInvalidated());
 | 
											
												
													
														|  | 
 |  | +			metadata.put(OAuth2Authorization.Token.CLAIMS_METADATA_NAME, idToken.getClaims().getClaims());
 | 
											
												
													
														|  | 
 |  | +		});
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	static void mapDeviceCode(OAuth2DeviceCodeGrantAuthorization.DeviceCode deviceCode,
 | 
											
												
													
														|  | 
 |  | +			OAuth2Authorization.Builder builder) {
 | 
											
												
													
														|  | 
 |  | +		if (deviceCode == null) {
 | 
											
												
													
														|  | 
 |  | +			return;
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +		OAuth2DeviceCode oauth2DeviceCode = new OAuth2DeviceCode(deviceCode.getTokenValue(), deviceCode.getIssuedAt(),
 | 
											
												
													
														|  | 
 |  | +				deviceCode.getExpiresAt());
 | 
											
												
													
														|  | 
 |  | +		builder.token(oauth2DeviceCode, (metadata) -> metadata.put(OAuth2Authorization.Token.INVALIDATED_METADATA_NAME,
 | 
											
												
													
														|  | 
 |  | +				deviceCode.isInvalidated()));
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	static void mapUserCode(OAuth2DeviceCodeGrantAuthorization.UserCode userCode, OAuth2Authorization.Builder builder) {
 | 
											
												
													
														|  | 
 |  | +		if (userCode == null) {
 | 
											
												
													
														|  | 
 |  | +			return;
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +		OAuth2UserCode oauth2UserCode = new OAuth2UserCode(userCode.getTokenValue(), userCode.getIssuedAt(),
 | 
											
												
													
														|  | 
 |  | +				userCode.getExpiresAt());
 | 
											
												
													
														|  | 
 |  | +		builder.token(oauth2UserCode, (metadata) -> metadata.put(OAuth2Authorization.Token.INVALIDATED_METADATA_NAME,
 | 
											
												
													
														|  | 
 |  | +				userCode.isInvalidated()));
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +}
 |