https://docs.spring.io/spring-security/oauth/apidocs/org/springframework/security/oauth2/ AuthServer endpoints https://docs.spring.io/spring-security/oauth/apidocs/org/springframework/security/oauth2/provider/endpoint/package-summary.html https://docs.spring.io/spring-security/oauth/apidocs/org/springframework/security/oauth2/provider/endpoint/CheckTokenEndpoint.html /oauth/check_token https://docs.spring.io/spring-security/oauth/apidocs/org/springframework/security/oauth2/provider/endpoint/TokenKeyEndpoint.html /oauth/token_key AuthClient https://docs.spring.io/spring-security/oauth/apidocs/org/springframework/security/oauth2/client/package-summary.html OAuth2RestTemplate https://docs.spring.io/spring-security/oauth/apidocs/org/springframework/security/oauth2/client/OAuth2RestTemplate.html https://github.com/spring-projects/spring-security-oauth/blob/master/spring-security-oauth2/src/main/java/org/springframework/security/oauth2/client/OAuth2RestTemplate.java https://stackoverflow.com/questions/27864295/how-to-use-oauth2resttemplate grant types org.springframework.security.oauth2.client.token.grant.code.AuthorizationCodeResourceDetails org.springframework.security.oauth2.client.token.grant.client.ClientCredentialsResourceDetails; AuthProvider https://docs.spring.io/spring-security/oauth/apidocs/org/springframework/security/oauth2/provider/package-summary.html CommonOAuth2Provider https://github.com/spring-projects/spring-security/blob/master/config/src/main/java/org/springframework/security/config/oauth2/client/CommonOAuth2Provider.java config.annotation https://docs.spring.io/spring-security/oauth/apidocs/org/springframework/security/oauth2/config/annotation/ config.xml https://docs.spring.io/spring-security/oauth/apidocs/org/springframework/security/oauth2/config/xml/package-summary.html common https://docs.spring.io/spring-security/oauth/apidocs/org/springframework/security/oauth2/common/package-summary.html expiration ExpiringOAuth2RefreshToken https://docs.spring.io/spring-security/oauth/apidocs/org/springframework/security/oauth2/common/ExpiringOAuth2RefreshToken.html protected boolean isExpired(OAuth2RefreshToken refreshToken) { if (refreshToken instanceof ExpiringOAuth2RefreshToken) { ExpiringOAuth2RefreshToken expiringToken = (ExpiringOAuth2RefreshToken) refreshToken; return expiringToken.getExpiration() == null || System.currentTimeMillis() > expiringToken.getExpiration().getTime(); } return false; }