Package org.keycloak.protocol.oidc
Class TokenManager
java.lang.Object
org.keycloak.protocol.oidc.TokenManager
Stateless object that creates tokens and manages oauth access codes
- Version:
- $Revision: 1 $
- Author:
- Bill Burke
- 
Nested Class SummaryNested ClassesModifier and TypeClassDescriptionclassstatic classstatic classCheck if access token was revoked with OAuth revocation endpointstatic class
- 
Constructor SummaryConstructors
- 
Method SummaryModifier and TypeMethodDescriptionstatic ClientSessionContextattachAuthenticationSession(KeycloakSession session, UserSessionModel userSession, AuthenticationSessionModel authSession) booleancheckTokenValidForIntrospection(KeycloakSession session, RealmModel realm, AccessToken token, boolean updateTimestamps) Checks if the token is valid.createClientAccessToken(KeycloakSession session, RealmModel realm, ClientModel client, UserModel user, UserSessionModel userSession, ClientSessionContext clientSessionCtx) static voiddettachClientSession(AuthenticatedClientSessionModel clientSession) generateUserInfoClaims(AccessToken userInfo, UserModel userModel) getAccess(UserModel user, ClientModel client, Stream<ClientScopeModel> clientScopes) static Stream<ClientScopeModel>getRequestedClientScopes(String scopeParam, ClientModel client) Return client itself + all default client scopes of client + optional client scopes requested by scope parametergetValidOIDCIdentityProvidersForBackchannelLogout(RealmModel realm, KeycloakSession session, String encodedLogoutToken, LogoutToken logoutToken) protected AccessTokeninitToken(RealmModel realm, ClientModel client, UserModel user, UserSessionModel session, ClientSessionContext clientSessionCtx, jakarta.ws.rs.core.UriInfo uriInfo) static booleanisValidScope(String scopes, ClientModel client) static booleanisValidScope(String scopes, AuthorizationRequestContext authorizationRequestContext, ClientModel client) Check that all the ClientScopes that have been parsed into authorization_resources are actually in the requested scopes otherwise, the scope wasn't parsed correctlystatic UserModellookupUserFromStatelessToken(KeycloakSession session, RealmModel realm, AccessToken token) Lookup user from the "stateless" token.parseScopeParameter(String scopeParam) refreshAccessToken(KeycloakSession session, jakarta.ws.rs.core.UriInfo uriInfo, ClientConnection connection, RealmModel realm, ClientModel authorizedClient, String encodedRefreshToken, EventBuilder event, jakarta.ws.rs.core.HttpHeaders headers, HttpRequest request) responseBuilder(RealmModel realm, ClientModel client, EventBuilder event, KeycloakSession session, UserSessionModel userSession, ClientSessionContext clientSessionCtx) toLogoutToken(String encodedLogoutToken) toRefreshToken(KeycloakSession session, String encodedRefreshToken) transformAccessToken(KeycloakSession session, AccessToken token, UserSessionModel userSession, ClientSessionContext clientSessionCtx) transformAccessTokenResponse(KeycloakSession session, AccessTokenResponse accessTokenResponse, UserSessionModel userSession, ClientSessionContext clientSessionCtx) transformIDToken(KeycloakSession session, IDToken token, UserSessionModel userSession, ClientSessionContext clientSessionCtx) transformUserInfoAccessToken(KeycloakSession session, AccessToken token, UserSessionModel userSession, ClientSessionContext clientSessionCtx) validateLogoutTokenAgainstIdpProvider(Stream<OIDCIdentityProvider> oidcIdps, String encodedLogoutToken, LogoutToken logoutToken) validateToken(KeycloakSession session, jakarta.ws.rs.core.UriInfo uriInfo, ClientConnection connection, RealmModel realm, RefreshToken oldToken, jakarta.ws.rs.core.HttpHeaders headers) static booleanverifyConsentStillAvailable(KeycloakSession session, UserModel user, ClientModel client, Stream<ClientScopeModel> requestedClientScopes) verifyIDToken(KeycloakSession session, RealmModel realm, String encodedIDToken) verifyIDTokenSignature(KeycloakSession session, String encodedIDToken) verifyLogoutToken(KeycloakSession session, RealmModel realm, String encodedLogoutToken) verifyRefreshToken(KeycloakSession session, RealmModel realm, ClientModel client, HttpRequest request, String encodedRefreshToken, boolean checkExpiration) 
- 
Constructor Details- 
TokenManagerpublic TokenManager()
 
- 
- 
Method Details- 
validateTokenpublic TokenManager.TokenValidation validateToken(KeycloakSession session, jakarta.ws.rs.core.UriInfo uriInfo, ClientConnection connection, RealmModel realm, RefreshToken oldToken, jakarta.ws.rs.core.HttpHeaders headers) throws OAuthErrorException - Throws:
- OAuthErrorException
 
- 
checkTokenValidForIntrospectionpublic boolean checkTokenValidForIntrospection(KeycloakSession session, RealmModel realm, AccessToken token, boolean updateTimestamps) Checks if the token is valid. Optionally the session last refresh and client session timestamp are updated if the token was valid. This is used to keep the session alive when long lived tokens are used.- Parameters:
- session-
- realm-
- token-
- updateTimestamps-
- Returns:
 
- 
lookupUserFromStatelessTokenpublic static UserModel lookupUserFromStatelessToken(KeycloakSession session, RealmModel realm, AccessToken token) Lookup user from the "stateless" token. Stateless token is the token without sessionState filled (token doesn't belong to any userSession)
- 
refreshAccessTokenpublic TokenManager.AccessTokenResponseBuilder refreshAccessToken(KeycloakSession session, jakarta.ws.rs.core.UriInfo uriInfo, ClientConnection connection, RealmModel realm, ClientModel authorizedClient, String encodedRefreshToken, EventBuilder event, jakarta.ws.rs.core.HttpHeaders headers, HttpRequest request) throws OAuthErrorException - Throws:
- OAuthErrorException
 
- 
verifyRefreshTokenpublic RefreshToken verifyRefreshToken(KeycloakSession session, RealmModel realm, ClientModel client, HttpRequest request, String encodedRefreshToken, boolean checkExpiration) throws OAuthErrorException - Throws:
- OAuthErrorException
 
- 
toRefreshTokenpublic RefreshToken toRefreshToken(KeycloakSession session, String encodedRefreshToken) throws JWSInputException, OAuthErrorException - Throws:
- JWSInputException
- OAuthErrorException
 
- 
verifyIDTokenpublic IDToken verifyIDToken(KeycloakSession session, RealmModel realm, String encodedIDToken) throws OAuthErrorException - Throws:
- OAuthErrorException
 
- 
verifyIDTokenSignaturepublic IDToken verifyIDTokenSignature(KeycloakSession session, String encodedIDToken) throws OAuthErrorException - Throws:
- OAuthErrorException
 
- 
createClientAccessTokenpublic AccessToken createClientAccessToken(KeycloakSession session, RealmModel realm, ClientModel client, UserModel user, UserSessionModel userSession, ClientSessionContext clientSessionCtx) 
- 
attachAuthenticationSessionpublic static ClientSessionContext attachAuthenticationSession(KeycloakSession session, UserSessionModel userSession, AuthenticationSessionModel authSession) 
- 
dettachClientSession
- 
getAccesspublic static Set<RoleModel> getAccess(UserModel user, ClientModel client, Stream<ClientScopeModel> clientScopes) 
- 
getRequestedClientScopespublic static Stream<ClientScopeModel> getRequestedClientScopes(String scopeParam, ClientModel client) Return client itself + all default client scopes of client + optional client scopes requested by scope parameter
- 
isValidScopepublic static boolean isValidScope(String scopes, AuthorizationRequestContext authorizationRequestContext, ClientModel client) Check that all the ClientScopes that have been parsed into authorization_resources are actually in the requested scopes otherwise, the scope wasn't parsed correctly- Parameters:
- scopes-
- authorizationRequestContext-
- client-
- Returns:
 
- 
isValidScope
- 
parseScopeParameter
- 
verifyConsentStillAvailablepublic static boolean verifyConsentStillAvailable(KeycloakSession session, UserModel user, ClientModel client, Stream<ClientScopeModel> requestedClientScopes) 
- 
transformAccessTokenpublic AccessToken transformAccessToken(KeycloakSession session, AccessToken token, UserSessionModel userSession, ClientSessionContext clientSessionCtx) 
- 
transformAccessTokenResponsepublic AccessTokenResponse transformAccessTokenResponse(KeycloakSession session, AccessTokenResponse accessTokenResponse, UserSessionModel userSession, ClientSessionContext clientSessionCtx) 
- 
transformUserInfoAccessTokenpublic AccessToken transformUserInfoAccessToken(KeycloakSession session, AccessToken token, UserSessionModel userSession, ClientSessionContext clientSessionCtx) 
- 
generateUserInfoClaims
- 
transformIDTokenpublic IDToken transformIDToken(KeycloakSession session, IDToken token, UserSessionModel userSession, ClientSessionContext clientSessionCtx) 
- 
initTokenprotected AccessToken initToken(RealmModel realm, ClientModel client, UserModel user, UserSessionModel session, ClientSessionContext clientSessionCtx, jakarta.ws.rs.core.UriInfo uriInfo) 
- 
responseBuilderpublic TokenManager.AccessTokenResponseBuilder responseBuilder(RealmModel realm, ClientModel client, EventBuilder event, KeycloakSession session, UserSessionModel userSession, ClientSessionContext clientSessionCtx) 
- 
verifyLogoutTokenpublic LogoutTokenValidationCode verifyLogoutToken(KeycloakSession session, RealmModel realm, String encodedLogoutToken) 
- 
toLogoutToken
- 
getValidOIDCIdentityProvidersForBackchannelLogoutpublic Stream<OIDCIdentityProvider> getValidOIDCIdentityProvidersForBackchannelLogout(RealmModel realm, KeycloakSession session, String encodedLogoutToken, LogoutToken logoutToken) 
- 
validateLogoutTokenAgainstIdpProviderpublic Stream<OIDCIdentityProvider> validateLogoutTokenAgainstIdpProvider(Stream<OIDCIdentityProvider> oidcIdps, String encodedLogoutToken, LogoutToken logoutToken) 
 
-