keycloak-service
クラス | 静的公開メンバ関数 | 静的公開変数類 | 静的非公開メンバ関数 | 全メンバ一覧
org.keycloak.services.clientregistration.ClientRegistrationTokenUtils クラス
org.keycloak.services.clientregistration.ClientRegistrationTokenUtils 連携図
Collaboration graph

クラス

class  TokenVerification
 

静的公開メンバ関数

static String updateTokenSignature (KeycloakSession session, ClientRegistrationAuth auth)
 
static String updateRegistrationAccessToken (KeycloakSession session, ClientModel client, RegistrationAuth registrationAuth)
 
static String updateRegistrationAccessToken (KeycloakSession session, RealmModel realm, ClientModel client, RegistrationAuth registrationAuth)
 
static String createInitialAccessToken (KeycloakSession session, RealmModel realm, ClientInitialAccessModel model)
 
static TokenVerification verifyToken (KeycloakSession session, RealmModel realm, String token)
 

静的公開変数類

static final String TYPE_INITIAL_ACCESS_TOKEN = "InitialAccessToken"
 
static final String TYPE_REGISTRATION_ACCESS_TOKEN = "RegistrationAccessToken"
 

静的非公開メンバ関数

static String setupToken (JsonWebToken jwt, KeycloakSession session, RealmModel realm, String id, String type, int expiration)
 
static String getIssuer (KeycloakSession session, RealmModel realm)
 

詳解

著者
Stian Thorgersen

関数詳解

◆ createInitialAccessToken()

static String org.keycloak.services.clientregistration.ClientRegistrationTokenUtils.createInitialAccessToken ( KeycloakSession  session,
RealmModel  realm,
ClientInitialAccessModel  model 
)
inlinestatic
83  {
84  InitialAccessToken initialToken = new InitialAccessToken();
85  return setupToken(initialToken, session, realm, model.getId(), TYPE_INITIAL_ACCESS_TOKEN, model.getExpiration() > 0 ? model.getTimestamp() + model.getExpiration() : 0);
86  }
static final String TYPE_INITIAL_ACCESS_TOKEN
Definition: ClientRegistrationTokenUtils.java:44
static String setupToken(JsonWebToken jwt, KeycloakSession session, RealmModel realm, String id, String type, int expiration)
Definition: ClientRegistrationTokenUtils.java:120

◆ getIssuer()

static String org.keycloak.services.clientregistration.ClientRegistrationTokenUtils.getIssuer ( KeycloakSession  session,
RealmModel  realm 
)
inlinestaticprivate
133  {
134  return Urls.realmIssuer(session.getContext().getUri().getBaseUri(), realm.getName());
135  }

◆ setupToken()

static String org.keycloak.services.clientregistration.ClientRegistrationTokenUtils.setupToken ( JsonWebToken  jwt,
KeycloakSession  session,
RealmModel  realm,
String  id,
String  type,
int  expiration 
)
inlinestaticprivate
120  {
121  String issuer = getIssuer(session, realm);
122 
123  jwt.type(type);
124  jwt.id(id);
125  jwt.issuedAt(Time.currentTime());
126  jwt.expiration(expiration);
127  jwt.issuer(issuer);
128  jwt.audience(issuer);
129 
130  return session.tokens().encode(jwt);
131  }
static String getIssuer(KeycloakSession session, RealmModel realm)
Definition: ClientRegistrationTokenUtils.java:133

◆ updateRegistrationAccessToken() [1/2]

static String org.keycloak.services.clientregistration.ClientRegistrationTokenUtils.updateRegistrationAccessToken ( KeycloakSession  session,
ClientModel  client,
RegistrationAuth  registrationAuth 
)
inlinestatic
69  {
70  return updateRegistrationAccessToken(session, session.getContext().getRealm(), client, registrationAuth);
71  }
static String updateRegistrationAccessToken(KeycloakSession session, ClientModel client, RegistrationAuth registrationAuth)
Definition: ClientRegistrationTokenUtils.java:69

◆ updateRegistrationAccessToken() [2/2]

static String org.keycloak.services.clientregistration.ClientRegistrationTokenUtils.updateRegistrationAccessToken ( KeycloakSession  session,
RealmModel  realm,
ClientModel  client,
RegistrationAuth  registrationAuth 
)
inlinestatic
73  {
74  String id = KeycloakModelUtils.generateId();
75  client.setRegistrationToken(id);
76 
77  RegistrationAccessToken regToken = new RegistrationAccessToken();
78  regToken.setRegistrationAuth(registrationAuth.toString().toLowerCase());
79 
80  return setupToken(regToken, session, realm, id, TYPE_REGISTRATION_ACCESS_TOKEN, 0);
81  }
static final String TYPE_REGISTRATION_ACCESS_TOKEN
Definition: ClientRegistrationTokenUtils.java:45
static String setupToken(JsonWebToken jwt, KeycloakSession session, RealmModel realm, String id, String type, int expiration)
Definition: ClientRegistrationTokenUtils.java:120

◆ updateTokenSignature()

static String org.keycloak.services.clientregistration.ClientRegistrationTokenUtils.updateTokenSignature ( KeycloakSession  session,
ClientRegistrationAuth  auth 
)
inlinestatic
47  {
48  String algorithm = session.tokens().signatureAlgorithm(TokenCategory.INTERNAL);
49  SignatureSignerContext signer = session.getProvider(SignatureProvider.class, algorithm).signer();
50 
51  if (signer.getKid().equals(auth.getKid())) {
52  return auth.getToken();
53  } else {
54  RegistrationAccessToken regToken = new RegistrationAccessToken();
55  regToken.setRegistrationAuth(auth.getRegistrationAuth().toString().toLowerCase());
56 
57  regToken.type(auth.getJwt().getType());
58  regToken.id(auth.getJwt().getId());
59  regToken.issuedAt(Time.currentTime());
60  regToken.expiration(0);
61  regToken.issuer(auth.getJwt().getIssuer());
62  regToken.audience(auth.getJwt().getIssuer());
63 
64  String token = new JWSBuilder().jsonContent(regToken).sign(signer);
65  return token;
66  }
67  }

◆ verifyToken()

static TokenVerification org.keycloak.services.clientregistration.ClientRegistrationTokenUtils.verifyToken ( KeycloakSession  session,
RealmModel  realm,
String  token 
)
inlinestatic
88  {
89  if (token == null) {
90  return TokenVerification.error(new RuntimeException("Missing token"));
91  }
92 
93  String kid;
94  JsonWebToken jwt;
95  try {
96  TokenVerifier<JsonWebToken> verifier = TokenVerifier.create(token, JsonWebToken.class)
97  .withChecks(new TokenVerifier.RealmUrlCheck(getIssuer(session, realm)), TokenVerifier.IS_ACTIVE);
98 
99  SignatureVerifierContext verifierContext = session.getProvider(SignatureProvider.class, verifier.getHeader().getAlgorithm().name()).verifier(verifier.getHeader().getKeyId());
100  verifier.verifierContext(verifierContext);
101 
102  kid = verifierContext.getKid();
103 
104  verifier.verify();
105 
106  jwt = verifier.getToken();
107  } catch (VerificationException e) {
108  return TokenVerification.error(new RuntimeException("Failed decode token", e));
109  }
110 
111  if (!(TokenUtil.TOKEN_TYPE_BEARER.equals(jwt.getType()) ||
112  TYPE_INITIAL_ACCESS_TOKEN.equals(jwt.getType()) ||
113  TYPE_REGISTRATION_ACCESS_TOKEN.equals(jwt.getType()))) {
114  return TokenVerification.error(new RuntimeException("Invalid type of token"));
115  }
116 
117  return TokenVerification.success(kid, jwt);
118  }
static final String TYPE_REGISTRATION_ACCESS_TOKEN
Definition: ClientRegistrationTokenUtils.java:45
static final String TYPE_INITIAL_ACCESS_TOKEN
Definition: ClientRegistrationTokenUtils.java:44
static String getIssuer(KeycloakSession session, RealmModel realm)
Definition: ClientRegistrationTokenUtils.java:133

メンバ詳解

◆ TYPE_INITIAL_ACCESS_TOKEN

final String org.keycloak.services.clientregistration.ClientRegistrationTokenUtils.TYPE_INITIAL_ACCESS_TOKEN = "InitialAccessToken"
static

◆ TYPE_REGISTRATION_ACCESS_TOKEN

final String org.keycloak.services.clientregistration.ClientRegistrationTokenUtils.TYPE_REGISTRATION_ACCESS_TOKEN = "RegistrationAccessToken"
static

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