|
@@ -32,6 +32,7 @@ import org.springframework.security.oauth2.server.authorization.OAuth2Authorizat
|
|
import org.springframework.security.oauth2.server.authorization.TokenType;
|
|
import org.springframework.security.oauth2.server.authorization.TokenType;
|
|
import org.springframework.security.oauth2.server.authorization.client.RegisteredClient;
|
|
import org.springframework.security.oauth2.server.authorization.client.RegisteredClient;
|
|
import org.springframework.security.oauth2.server.authorization.config.TokenSettings;
|
|
import org.springframework.security.oauth2.server.authorization.config.TokenSettings;
|
|
|
|
+import org.springframework.security.oauth2.server.authorization.token.OAuth2TokenMetadata;
|
|
import org.springframework.security.oauth2.server.authorization.token.OAuth2Tokens;
|
|
import org.springframework.security.oauth2.server.authorization.token.OAuth2Tokens;
|
|
import org.springframework.util.Assert;
|
|
import org.springframework.util.Assert;
|
|
|
|
|
|
@@ -113,16 +114,21 @@ public class OAuth2RefreshTokenAuthenticationProvider implements AuthenticationP
|
|
scopes = authorizedScopes;
|
|
scopes = authorizedScopes;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ OAuth2RefreshToken refreshToken = authorization.getTokens().getRefreshToken();
|
|
|
|
+ OAuth2TokenMetadata refreshTokenMetadata = authorization.getTokens().getTokenMetadata(refreshToken);
|
|
|
|
+
|
|
|
|
+ if (refreshTokenMetadata.isInvalidated()) {
|
|
|
|
+ throw new OAuth2AuthenticationException(new OAuth2Error(OAuth2ErrorCodes.INVALID_GRANT));
|
|
|
|
+ }
|
|
|
|
+
|
|
Jwt jwt = OAuth2TokenIssuerUtil
|
|
Jwt jwt = OAuth2TokenIssuerUtil
|
|
.issueJwtAccessToken(this.jwtEncoder, authorization.getPrincipalName(), registeredClient.getClientId(), scopes, registeredClient.getTokenSettings().accessTokenTimeToLive());
|
|
.issueJwtAccessToken(this.jwtEncoder, authorization.getPrincipalName(), registeredClient.getClientId(), scopes, registeredClient.getTokenSettings().accessTokenTimeToLive());
|
|
OAuth2AccessToken accessToken = new OAuth2AccessToken(OAuth2AccessToken.TokenType.BEARER,
|
|
OAuth2AccessToken accessToken = new OAuth2AccessToken(OAuth2AccessToken.TokenType.BEARER,
|
|
jwt.getTokenValue(), jwt.getIssuedAt(), jwt.getExpiresAt(), scopes);
|
|
jwt.getTokenValue(), jwt.getIssuedAt(), jwt.getExpiresAt(), scopes);
|
|
|
|
|
|
TokenSettings tokenSettings = registeredClient.getTokenSettings();
|
|
TokenSettings tokenSettings = registeredClient.getTokenSettings();
|
|
- OAuth2RefreshToken refreshToken;
|
|
|
|
- if (tokenSettings.reuseRefreshTokens()) {
|
|
|
|
- refreshToken = authorization.getTokens().getRefreshToken();
|
|
|
|
- } else {
|
|
|
|
|
|
+
|
|
|
|
+ if (!tokenSettings.reuseRefreshTokens()) {
|
|
refreshToken = OAuth2TokenIssuerUtil.issueRefreshToken(tokenSettings.refreshTokenTimeToLive());
|
|
refreshToken = OAuth2TokenIssuerUtil.issueRefreshToken(tokenSettings.refreshTokenTimeToLive());
|
|
}
|
|
}
|
|
|
|
|