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

公開メンバ関数

 ClientPublicKeyLoader (KeycloakSession session, ClientModel client)
 
Map< String, PublicKey > loadKeys () throws Exception
 

静的非公開メンバ関数

static PublicKey getSignatureValidationKey (CertificateRepresentation certInfo) throws ModelException
 

非公開変数類

final KeycloakSession session
 
final ClientModel client
 

静的非公開変数類

static final Logger logger = Logger.getLogger(ClientPublicKeyLoader.class)
 

詳解

著者
Marek Posolda

構築子と解体子

◆ ClientPublicKeyLoader()

org.keycloak.keys.loader.ClientPublicKeyLoader.ClientPublicKeyLoader ( KeycloakSession  session,
ClientModel  client 
)
inline
52  {
53  this.session = session;
54  this.client = client;
55  }
final KeycloakSession session
Definition: ClientPublicKeyLoader.java:49
final ClientModel client
Definition: ClientPublicKeyLoader.java:50

関数詳解

◆ getSignatureValidationKey()

static PublicKey org.keycloak.keys.loader.ClientPublicKeyLoader.getSignatureValidationKey ( CertificateRepresentation  certInfo) throws ModelException
inlinestaticprivate
82  {
83  String encodedCertificate = certInfo.getCertificate();
84  String encodedPublicKey = certInfo.getPublicKey();
85 
86  if (encodedCertificate == null && encodedPublicKey == null) {
87  throw new ModelException("Client doesn't have certificate or publicKey configured");
88  }
89 
90  if (encodedCertificate != null && encodedPublicKey != null) {
91  throw new ModelException("Client has both publicKey and certificate configured");
92  }
93 
94  if (encodedCertificate != null) {
95  X509Certificate clientCert = KeycloakModelUtils.getCertificate(encodedCertificate);
96  return clientCert.getPublicKey();
97  } else {
98  return KeycloakModelUtils.getPublicKey(encodedPublicKey);
99  }
100  }

◆ loadKeys()

Map<String, PublicKey> org.keycloak.keys.loader.ClientPublicKeyLoader.loadKeys ( ) throws Exception
inline
59  {
60  OIDCAdvancedConfigWrapper config = OIDCAdvancedConfigWrapper.fromClientModel(client);
61  if (config.isUseJwksUrl()) {
62  String jwksUrl = config.getJwksUrl();
63  jwksUrl = ResolveRelative.resolveRelativeUri(session.getContext().getUri().getRequestUri(), client.getRootUrl(), jwksUrl);
64  JSONWebKeySet jwks = JWKSHttpUtils.sendJwksRequest(session, jwksUrl);
65  return JWKSUtils.getKeysForUse(jwks, JWK.Use.SIG);
66  } else {
67  try {
68  CertificateRepresentation certInfo = CertificateInfoHelper.getCertificateFromClient(client, JWTClientAuthenticator.ATTR_PREFIX);
69  PublicKey publicKey = getSignatureValidationKey(certInfo);
70 
71  // Check if we have kid in DB, generate otherwise
72  String kid = certInfo.getKid() != null ? certInfo.getKid() : KeyUtils.createKeyId(publicKey);
73  return Collections.singletonMap(kid, publicKey);
74  } catch (ModelException me) {
75  logger.warnf(me, "Unable to retrieve publicKey for verify signature of client '%s' . Error details: %s", client.getClientId(), me.getMessage());
76  return Collections.emptyMap();
77  }
78 
79  }
80  }
final KeycloakSession session
Definition: ClientPublicKeyLoader.java:49
final ClientModel client
Definition: ClientPublicKeyLoader.java:50
static PublicKey getSignatureValidationKey(CertificateRepresentation certInfo)
Definition: ClientPublicKeyLoader.java:82
static final Logger logger
Definition: ClientPublicKeyLoader.java:47

メンバ詳解

◆ client

final ClientModel org.keycloak.keys.loader.ClientPublicKeyLoader.client
private

◆ logger

final Logger org.keycloak.keys.loader.ClientPublicKeyLoader.logger = Logger.getLogger(ClientPublicKeyLoader.class)
staticprivate

◆ session

final KeycloakSession org.keycloak.keys.loader.ClientPublicKeyLoader.session
private

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