keycloak-service
公開メンバ関数 | 関数 | 非公開メンバ関数 | 非公開変数類 | 静的非公開変数類 | 全メンバ一覧
org.keycloak.jose.jws.DefaultTokenManager クラス
org.keycloak.jose.jws.DefaultTokenManager の継承関係図
Inheritance graph
org.keycloak.jose.jws.DefaultTokenManager 連携図
Collaboration graph

公開メンバ関数

 DefaultTokenManager (KeycloakSession session)
 
String encode (Token token)
 
String signatureAlgorithm (TokenCategory category)
 

関数

public< T extends Token > T decode (String token, Class< T > clazz)
 

非公開メンバ関数

String getSignatureAlgorithm (String clientAttribute)
 

非公開変数類

final KeycloakSession session
 

静的非公開変数類

static final Logger logger = Logger.getLogger(DefaultTokenManager.class)
 
static String DEFAULT_ALGORITHM_NAME = Algorithm.RS256
 

詳解

構築子と解体子

◆ DefaultTokenManager()

org.keycloak.jose.jws.DefaultTokenManager.DefaultTokenManager ( KeycloakSession  session)
inline
40  {
41  this.session = session;
42  }
final KeycloakSession session
Definition: DefaultTokenManager.java:38

関数詳解

◆ decode()

public<T extends Token> T org.keycloak.jose.jws.DefaultTokenManager.decode ( String  token,
Class< T >  clazz 
)
inlinepackage
56  {
57  if (token == null) {
58  return null;
59  }
60 
61  try {
62  JWSInput jws = new JWSInput(token);
63 
64  String signatureAlgorithm = jws.getHeader().getAlgorithm().name();
65 
66  SignatureProvider signatureProvider = session.getProvider(SignatureProvider.class, signatureAlgorithm);
67  if (signatureProvider == null) {
68  return null;
69  }
70 
71  String kid = jws.getHeader().getKeyId();
72  // Backwards compatibility. Old offline tokens and cookies didn't have KID in the header
73  if (kid == null) {
74  logger.debugf("KID is null in token. Using the realm active key to verify token signature.");
75  kid = session.keys().getActiveKey(session.getContext().getRealm(), KeyUse.SIG, signatureAlgorithm).getKid();
76  }
77 
78  boolean valid = signatureProvider.verifier(kid).verify(jws.getEncodedSignatureInput().getBytes("UTF-8"), jws.getSignature());
79  return valid ? jws.readJsonContent(clazz) : null;
80  } catch (Exception e) {
81  logger.debug("Failed to decode token", e);
82  return null;
83  }
84  }
String signatureAlgorithm(TokenCategory category)
Definition: DefaultTokenManager.java:87
final KeycloakSession session
Definition: DefaultTokenManager.java:38
static final Logger logger
Definition: DefaultTokenManager.java:34

◆ encode()

String org.keycloak.jose.jws.DefaultTokenManager.encode ( Token  token)
inline
45  {
46  String signatureAlgorithm = signatureAlgorithm(token.getCategory());
47 
48  SignatureProvider signatureProvider = session.getProvider(SignatureProvider.class, signatureAlgorithm);
49  SignatureSignerContext signer = signatureProvider.signer();
50 
51  String encodedToken = new JWSBuilder().type("JWT").jsonContent(token).sign(signer);
52  return encodedToken;
53  }
String signatureAlgorithm(TokenCategory category)
Definition: DefaultTokenManager.java:87
final KeycloakSession session
Definition: DefaultTokenManager.java:38

◆ getSignatureAlgorithm()

String org.keycloak.jose.jws.DefaultTokenManager.getSignatureAlgorithm ( String  clientAttribute)
inlineprivate
104  {
105  RealmModel realm = session.getContext().getRealm();
106  ClientModel client = session.getContext().getClient();
107 
108  String algorithm = client != null && clientAttribute != null ? client.getAttribute(clientAttribute) : null;
109  if (algorithm != null && !algorithm.equals("")) {
110  return algorithm;
111  }
112 
113  algorithm = realm.getDefaultSignatureAlgorithm();
114  if (algorithm != null && !algorithm.equals("")) {
115  return algorithm;
116  }
117 
118  return DEFAULT_ALGORITHM_NAME;
119  }
static String DEFAULT_ALGORITHM_NAME
Definition: DefaultTokenManager.java:36
final KeycloakSession session
Definition: DefaultTokenManager.java:38

◆ signatureAlgorithm()

String org.keycloak.jose.jws.DefaultTokenManager.signatureAlgorithm ( TokenCategory  category)
inline
87  {
88  switch (category) {
89  case INTERNAL:
90  return Algorithm.HS256;
91  case ADMIN:
92  return getSignatureAlgorithm(null);
93  case ACCESS:
94  return getSignatureAlgorithm(OIDCConfigAttributes.ACCESS_TOKEN_SIGNED_RESPONSE_ALG);
95  case ID:
96  return getSignatureAlgorithm(OIDCConfigAttributes.ID_TOKEN_SIGNED_RESPONSE_ALG);
97  case USERINFO:
98  return getSignatureAlgorithm(OIDCConfigAttributes.USER_INFO_RESPONSE_SIGNATURE_ALG);
99  default:
100  throw new RuntimeException("Unknown token type");
101  }
102  }
String getSignatureAlgorithm(String clientAttribute)
Definition: DefaultTokenManager.java:104

メンバ詳解

◆ DEFAULT_ALGORITHM_NAME

String org.keycloak.jose.jws.DefaultTokenManager.DEFAULT_ALGORITHM_NAME = Algorithm.RS256
staticprivate

◆ logger

final Logger org.keycloak.jose.jws.DefaultTokenManager.logger = Logger.getLogger(DefaultTokenManager.class)
staticprivate

◆ session

final KeycloakSession org.keycloak.jose.jws.DefaultTokenManager.session
private

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