keycloak-service
公開メンバ関数 | 変数 | 非公開メンバ関数 | 全メンバ一覧
org.keycloak.protocol.oidc.TokenManager.AccessTokenResponseBuilder クラス
org.keycloak.protocol.oidc.TokenManager.AccessTokenResponseBuilder 連携図
Collaboration graph

公開メンバ関数

 AccessTokenResponseBuilder (RealmModel realm, ClientModel client, EventBuilder event, KeycloakSession session, UserSessionModel userSession, ClientSessionContext clientSessionCtx)
 
AccessToken getAccessToken ()
 
RefreshToken getRefreshToken ()
 
IDToken getIdToken ()
 
AccessTokenResponseBuilder accessToken (AccessToken accessToken)
 
AccessTokenResponseBuilder refreshToken (RefreshToken refreshToken)
 
AccessTokenResponseBuilder generateAccessToken ()
 
AccessTokenResponseBuilder generateRefreshToken ()
 
AccessTokenResponseBuilder generateIDToken ()
 
AccessTokenResponseBuilder generateAccessTokenHash ()
 
AccessTokenResponseBuilder generateCodeHash (String code)
 
AccessTokenResponseBuilder generateStateHash (String state)
 
AccessTokenResponse build ()
 

変数

RealmModel realm
 
ClientModel client
 
EventBuilder event
 
KeycloakSession session
 
UserSessionModel userSession
 
ClientSessionContext clientSessionCtx
 
AccessToken accessToken
 
RefreshToken refreshToken
 
IDToken idToken
 
boolean generateAccessTokenHash = false
 
String codeHash
 
String stateHash
 

非公開メンバ関数

int getRefreshExpiration ()
 

詳解

構築子と解体子

◆ AccessTokenResponseBuilder()

org.keycloak.protocol.oidc.TokenManager.AccessTokenResponseBuilder.AccessTokenResponseBuilder ( RealmModel  realm,
ClientModel  client,
EventBuilder  event,
KeycloakSession  session,
UserSessionModel  userSession,
ClientSessionContext  clientSessionCtx 
)
inline
763  {
764  this.realm = realm;
765  this.client = client;
766  this.event = event;
767  this.session = session;
768  this.userSession = userSession;
770  }
EventBuilder event
Definition: TokenManager.java:748
ClientSessionContext clientSessionCtx
Definition: TokenManager.java:751
KeycloakSession session
Definition: TokenManager.java:749
UserSessionModel userSession
Definition: TokenManager.java:750
ClientModel client
Definition: TokenManager.java:747
RealmModel realm
Definition: TokenManager.java:746

関数詳解

◆ accessToken()

AccessTokenResponseBuilder org.keycloak.protocol.oidc.TokenManager.AccessTokenResponseBuilder.accessToken ( AccessToken  accessToken)
inline
784  {
785  this.accessToken = accessToken;
786  return this;
787  }
AccessToken accessToken
Definition: TokenManager.java:753

◆ build()

AccessTokenResponse org.keycloak.protocol.oidc.TokenManager.AccessTokenResponseBuilder.build ( )
inline
869  {
870  if (accessToken != null) {
871  event.detail(Details.TOKEN_ID, accessToken.getId());
872  }
873 
874  if (refreshToken != null) {
875  if (event.getEvent().getDetails().containsKey(Details.REFRESH_TOKEN_ID)) {
876  event.detail(Details.UPDATED_REFRESH_TOKEN_ID, refreshToken.getId());
877  } else {
878  event.detail(Details.REFRESH_TOKEN_ID, refreshToken.getId());
879  }
880  event.detail(Details.REFRESH_TOKEN_TYPE, refreshToken.getType());
881  }
882 
883  AccessTokenResponse res = new AccessTokenResponse();
884 
885  if (accessToken != null) {
886  String encodedToken = session.tokens().encode(accessToken);
887  res.setToken(encodedToken);
888  res.setTokenType("bearer");
889  res.setSessionState(accessToken.getSessionState());
890  if (accessToken.getExpiration() != 0) {
891  res.setExpiresIn(accessToken.getExpiration() - Time.currentTime());
892  }
893  }
894 
896  String atHash = HashProvider.oidcHash(session.tokens().signatureAlgorithm(TokenCategory.ID), res.getToken());
897  idToken.setAccessTokenHash(atHash);
898  }
899  if (codeHash != null) {
900  idToken.setCodeHash(codeHash);
901  }
902  // Financial API - Part 2: Read and Write API Security Profile
903  // http://openid.net/specs/openid-financial-api-part-2.html#authorization-server
904  if (stateHash != null) {
905  idToken.setStateHash(stateHash);
906  }
907  if (idToken != null) {
908  String encodedToken = session.tokens().encode(idToken);
909  res.setIdToken(encodedToken);
910  }
911  if (refreshToken != null) {
912  String encodedToken = session.tokens().encode(refreshToken);
913  res.setRefreshToken(encodedToken);
914  if (refreshToken.getExpiration() != 0) {
915  res.setRefreshExpiresIn(refreshToken.getExpiration() - Time.currentTime());
916  }
917  }
918 
919  int notBefore = realm.getNotBefore();
920  if (client.getNotBefore() > notBefore) notBefore = client.getNotBefore();
921  int userNotBefore = session.users().getNotBeforeOfUser(realm, userSession.getUser());
922  if (userNotBefore > notBefore) notBefore = userNotBefore;
923  res.setNotBeforePolicy(notBefore);
924 
925  // OIDC Financial API Read Only Profile : scope MUST be returned in the response from Token Endpoint
926  String responseScope = clientSessionCtx.getScopeString();
927  res.setScope(responseScope);
928  event.detail(Details.SCOPE, responseScope);
929 
930  return res;
931  }
EventBuilder event
Definition: TokenManager.java:748
AccessToken accessToken
Definition: TokenManager.java:753
ClientSessionContext clientSessionCtx
Definition: TokenManager.java:751
AccessTokenResponseBuilder generateAccessTokenHash()
Definition: TokenManager.java:852
KeycloakSession session
Definition: TokenManager.java:749
RefreshToken refreshToken
Definition: TokenManager.java:754
UserSessionModel userSession
Definition: TokenManager.java:750
ClientModel client
Definition: TokenManager.java:747
RealmModel realm
Definition: TokenManager.java:746

◆ generateAccessToken()

AccessTokenResponseBuilder org.keycloak.protocol.oidc.TokenManager.AccessTokenResponseBuilder.generateAccessToken ( )
inline
793  {
794  UserModel user = userSession.getUser();
796  return this;
797  }
AccessToken accessToken
Definition: TokenManager.java:753
ClientSessionContext clientSessionCtx
Definition: TokenManager.java:751
KeycloakSession session
Definition: TokenManager.java:749
UserSessionModel userSession
Definition: TokenManager.java:750
ClientModel client
Definition: TokenManager.java:747
AccessToken createClientAccessToken(KeycloakSession session, RealmModel realm, ClientModel client, UserModel user, UserSessionModel userSession, ClientSessionContext clientSessionCtx)
Definition: TokenManager.java:415
RealmModel realm
Definition: TokenManager.java:746

◆ generateAccessTokenHash()

AccessTokenResponseBuilder org.keycloak.protocol.oidc.TokenManager.AccessTokenResponseBuilder.generateAccessTokenHash ( )
inline
852  {
854  return this;
855  }
AccessTokenResponseBuilder generateAccessTokenHash()
Definition: TokenManager.java:852

◆ generateCodeHash()

AccessTokenResponseBuilder org.keycloak.protocol.oidc.TokenManager.AccessTokenResponseBuilder.generateCodeHash ( String  code)
inline
857  {
858  codeHash = HashProvider.oidcHash(session.tokens().signatureAlgorithm(TokenCategory.ID), code);
859  return this;
860  }
KeycloakSession session
Definition: TokenManager.java:749

◆ generateIDToken()

AccessTokenResponseBuilder org.keycloak.protocol.oidc.TokenManager.AccessTokenResponseBuilder.generateIDToken ( )
inline
831  {
832  if (accessToken == null) {
833  throw new IllegalStateException("accessToken not set");
834  }
835  idToken = new IDToken();
836  idToken.id(KeycloakModelUtils.generateId());
837  idToken.type(TokenUtil.TOKEN_TYPE_ID);
838  idToken.subject(accessToken.getSubject());
839  idToken.audience(client.getClientId());
840  idToken.issuedNow();
841  idToken.issuedFor(accessToken.getIssuedFor());
842  idToken.issuer(accessToken.getIssuer());
843  idToken.setNonce(accessToken.getNonce());
844  idToken.setAuthTime(accessToken.getAuthTime());
845  idToken.setSessionState(accessToken.getSessionState());
846  idToken.expiration(accessToken.getExpiration());
847  idToken.setAcr(accessToken.getAcr());
849  return this;
850  }
void transformIDToken(KeycloakSession session, IDToken token, UserSessionModel userSession, ClientSessionContext clientSessionCtx)
Definition: TokenManager.java:628
AccessToken accessToken
Definition: TokenManager.java:753
ClientSessionContext clientSessionCtx
Definition: TokenManager.java:751
KeycloakSession session
Definition: TokenManager.java:749
UserSessionModel userSession
Definition: TokenManager.java:750
ClientModel client
Definition: TokenManager.java:747

◆ generateRefreshToken()

AccessTokenResponseBuilder org.keycloak.protocol.oidc.TokenManager.AccessTokenResponseBuilder.generateRefreshToken ( )
inline
799  {
800  if (accessToken == null) {
801  throw new IllegalStateException("accessToken not set");
802  }
803 
804  ClientScopeModel offlineAccessScope = KeycloakModelUtils.getClientScopeByName(realm, OAuth2Constants.OFFLINE_ACCESS);
805  boolean offlineTokenRequested = offlineAccessScope==null ? false : clientSessionCtx.getClientScopeIds().contains(offlineAccessScope.getId());
806  if (offlineTokenRequested) {
807  UserSessionManager sessionManager = new UserSessionManager(session);
808  if (!sessionManager.isOfflineTokenAllowed(clientSessionCtx)) {
809  event.error(Errors.NOT_ALLOWED);
810  throw new ErrorResponseException("not_allowed", "Offline tokens not allowed for the user or client", Response.Status.BAD_REQUEST);
811  }
812 
813  refreshToken = new RefreshToken(accessToken);
814  refreshToken.type(TokenUtil.TOKEN_TYPE_OFFLINE);
815  sessionManager.createOrUpdateOfflineSession(clientSessionCtx.getClientSession(), userSession);
816  } else {
817  refreshToken = new RefreshToken(accessToken);
818  refreshToken.expiration(getRefreshExpiration());
819  }
820  refreshToken.id(KeycloakModelUtils.generateId());
821  refreshToken.issuedNow();
822  return this;
823  }
AccessToken accessToken
Definition: TokenManager.java:753
int getRefreshExpiration()
Definition: TokenManager.java:825
ClientSessionContext clientSessionCtx
Definition: TokenManager.java:751
KeycloakSession session
Definition: TokenManager.java:749
RefreshToken refreshToken
Definition: TokenManager.java:754
UserSessionModel userSession
Definition: TokenManager.java:750
RealmModel realm
Definition: TokenManager.java:746

◆ generateStateHash()

AccessTokenResponseBuilder org.keycloak.protocol.oidc.TokenManager.AccessTokenResponseBuilder.generateStateHash ( String  state)
inline
864  {
865  stateHash = HashProvider.oidcHash(session.tokens().signatureAlgorithm(TokenCategory.ID), state);
866  return this;
867  }
KeycloakSession session
Definition: TokenManager.java:749

◆ getAccessToken()

AccessToken org.keycloak.protocol.oidc.TokenManager.AccessTokenResponseBuilder.getAccessToken ( )
inline
772  {
773  return accessToken;
774  }
AccessToken accessToken
Definition: TokenManager.java:753

◆ getIdToken()

IDToken org.keycloak.protocol.oidc.TokenManager.AccessTokenResponseBuilder.getIdToken ( )
inline
780  {
781  return idToken;
782  }

◆ getRefreshExpiration()

int org.keycloak.protocol.oidc.TokenManager.AccessTokenResponseBuilder.getRefreshExpiration ( )
inlineprivate
825  {
826  int sessionExpires = userSession.getStarted() + realm.getSsoSessionMaxLifespan();
827  int expiration = Time.currentTime() + realm.getSsoSessionIdleTimeout();
828  return expiration <= sessionExpires ? expiration : sessionExpires;
829  }
UserSessionModel userSession
Definition: TokenManager.java:750
RealmModel realm
Definition: TokenManager.java:746

◆ getRefreshToken()

RefreshToken org.keycloak.protocol.oidc.TokenManager.AccessTokenResponseBuilder.getRefreshToken ( )
inline
776  {
777  return refreshToken;
778  }
RefreshToken refreshToken
Definition: TokenManager.java:754

◆ refreshToken()

AccessTokenResponseBuilder org.keycloak.protocol.oidc.TokenManager.AccessTokenResponseBuilder.refreshToken ( RefreshToken  refreshToken)
inline
788  {
789  this.refreshToken = refreshToken;
790  return this;
791  }
RefreshToken refreshToken
Definition: TokenManager.java:754

メンバ詳解

◆ accessToken

AccessToken org.keycloak.protocol.oidc.TokenManager.AccessTokenResponseBuilder.accessToken
package

◆ client

ClientModel org.keycloak.protocol.oidc.TokenManager.AccessTokenResponseBuilder.client
package

◆ clientSessionCtx

ClientSessionContext org.keycloak.protocol.oidc.TokenManager.AccessTokenResponseBuilder.clientSessionCtx
package

◆ codeHash

String org.keycloak.protocol.oidc.TokenManager.AccessTokenResponseBuilder.codeHash
package

◆ event

EventBuilder org.keycloak.protocol.oidc.TokenManager.AccessTokenResponseBuilder.event
package

◆ generateAccessTokenHash

boolean org.keycloak.protocol.oidc.TokenManager.AccessTokenResponseBuilder.generateAccessTokenHash = false
package

◆ idToken

IDToken org.keycloak.protocol.oidc.TokenManager.AccessTokenResponseBuilder.idToken
package

◆ realm

RealmModel org.keycloak.protocol.oidc.TokenManager.AccessTokenResponseBuilder.realm
package

◆ refreshToken

RefreshToken org.keycloak.protocol.oidc.TokenManager.AccessTokenResponseBuilder.refreshToken
package

◆ session

KeycloakSession org.keycloak.protocol.oidc.TokenManager.AccessTokenResponseBuilder.session
package

◆ stateHash

String org.keycloak.protocol.oidc.TokenManager.AccessTokenResponseBuilder.stateHash
package

◆ userSession

UserSessionModel org.keycloak.protocol.oidc.TokenManager.AccessTokenResponseBuilder.userSession
package

このクラス詳解は次のファイルから抽出されました: