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

公開メンバ関数

KeyProvider create (KeycloakSession session, ComponentModel model)
 
boolean createFallbackKeys (KeycloakSession session, KeyUse keyUse, String algorithm)
 
void validateConfiguration (KeycloakSession session, RealmModel realm, ComponentModel model) throws ComponentValidationException
 
String getHelpText ()
 
List< ProviderConfigProperty > getConfigProperties ()
 
String getId ()
 

静的公開メンバ関数

static final ProviderConfigurationBuilder configurationBuilder ()
 

静的公開変数類

static final String ID = "rsa-generated"
 

非公開メンバ関数

void generateKeys (RealmModel realm, ComponentModel model, int size)
 
void generateCertificate (RealmModel realm, ComponentModel model, KeyPair keyPair)
 

静的非公開変数類

static final Logger logger = Logger.getLogger(GeneratedRsaKeyProviderFactory.class)
 
static final String HELP_TEXT = "Generates RSA keys and creates a self-signed certificate"
 
static final List< ProviderConfigProperty > CONFIG_PROPERTIES
 

詳解

著者
Stian Thorgersen

関数詳解

◆ configurationBuilder()

static final ProviderConfigurationBuilder org.keycloak.keys.AbstractRsaKeyProviderFactory.configurationBuilder ( )
inlinestaticinherited
32  {
33  return ProviderConfigurationBuilder.create()
34  .property(Attributes.PRIORITY_PROPERTY)
35  .property(Attributes.ENABLED_PROPERTY)
36  .property(Attributes.ACTIVE_PROPERTY)
37  .property(Attributes.RS_ALGORITHM_PROPERTY);
38  }

◆ create()

KeyProvider org.keycloak.keys.GeneratedRsaKeyProviderFactory.create ( KeycloakSession  session,
ComponentModel  model 
)
inline
56  {
57  return new ImportedRsaKeyProvider(session.getContext().getRealm(), model);
58  }

◆ createFallbackKeys()

boolean org.keycloak.keys.GeneratedRsaKeyProviderFactory.createFallbackKeys ( KeycloakSession  session,
KeyUse  keyUse,
String  algorithm 
)
inline
61  {
62  if (keyUse.equals(KeyUse.SIG) && (algorithm.equals(Algorithm.RS256) || algorithm.equals(Algorithm.RS384) || algorithm.equals(Algorithm.RS512))) {
63  RealmModel realm = session.getContext().getRealm();
64 
65  ComponentModel generated = new ComponentModel();
66  generated.setName("fallback-" + algorithm);
67  generated.setParentId(realm.getId());
68  generated.setProviderId(ID);
69  generated.setProviderType(KeyProvider.class.getName());
70 
71  MultivaluedHashMap<String, String> config = new MultivaluedHashMap<>();
72  config.putSingle(Attributes.PRIORITY_KEY, "-100");
73  config.putSingle(Attributes.ALGORITHM_KEY, algorithm);
74  generated.setConfig(config);
75 
76  realm.addComponentModel(generated);
77 
78  return true;
79  } else {
80  return false;
81  }
82  }
static final String ID
Definition: GeneratedRsaKeyProviderFactory.java:47

◆ generateCertificate()

void org.keycloak.keys.GeneratedRsaKeyProviderFactory.generateCertificate ( RealmModel  realm,
ComponentModel  model,
KeyPair  keyPair 
)
inlineprivate
119  {
120  try {
121  Certificate certificate = CertificateUtils.generateV1SelfSignedCertificate(keyPair, realm.getName());
122  model.put(Attributes.CERTIFICATE_KEY, PemUtils.encodeCertificate(certificate));
123  } catch (Throwable t) {
124  throw new ComponentValidationException("Failed to generate certificate", t);
125  }
126  }

◆ generateKeys()

void org.keycloak.keys.GeneratedRsaKeyProviderFactory.generateKeys ( RealmModel  realm,
ComponentModel  model,
int  size 
)
inlineprivate
107  {
108  KeyPair keyPair;
109  try {
110  keyPair = KeyUtils.generateRsaKeyPair(size);
111  model.put(Attributes.PRIVATE_KEY_KEY, PemUtils.encodeKey(keyPair.getPrivate()));
112  } catch (Throwable t) {
113  throw new ComponentValidationException("Failed to generate keys", t);
114  }
115 
116  generateCertificate(realm, model, keyPair);
117  }
void generateCertificate(RealmModel realm, ComponentModel model, KeyPair keyPair)
Definition: GeneratedRsaKeyProviderFactory.java:119

◆ getConfigProperties()

List<ProviderConfigProperty> org.keycloak.keys.GeneratedRsaKeyProviderFactory.getConfigProperties ( )
inline
134  {
135  return CONFIG_PROPERTIES;
136  }
static final List< ProviderConfigProperty > CONFIG_PROPERTIES
Definition: GeneratedRsaKeyProviderFactory.java:51

◆ getHelpText()

String org.keycloak.keys.GeneratedRsaKeyProviderFactory.getHelpText ( )
inline
129  {
130  return HELP_TEXT;
131  }
static final String HELP_TEXT
Definition: GeneratedRsaKeyProviderFactory.java:49

◆ getId()

String org.keycloak.keys.GeneratedRsaKeyProviderFactory.getId ( )
inline
139  {
140  return ID;
141  }
static final String ID
Definition: GeneratedRsaKeyProviderFactory.java:47

◆ validateConfiguration()

void org.keycloak.keys.GeneratedRsaKeyProviderFactory.validateConfiguration ( KeycloakSession  session,
RealmModel  realm,
ComponentModel  model 
) throws ComponentValidationException
inline
85  {
86  super.validateConfiguration(session, realm, model);
87 
88  ConfigurationValidationHelper.check(model).checkList(Attributes.KEY_SIZE_PROPERTY, false);
89 
90  int size = model.get(Attributes.KEY_SIZE_KEY, 2048);
91 
92  if (!(model.contains(Attributes.PRIVATE_KEY_KEY) && model.contains(Attributes.CERTIFICATE_KEY))) {
93  generateKeys(realm, model, size);
94 
95  logger.debugv("Generated keys for {0}", realm.getName());
96  } else {
97  PrivateKey privateKey = PemUtils.decodePrivateKey(model.get(Attributes.PRIVATE_KEY_KEY));
98  int currentSize = ((RSAPrivateKey) privateKey).getModulus().bitLength();
99  if (currentSize != size) {
100  generateKeys(realm, model, size);
101 
102  logger.debugv("Key size changed, generating new keys for {0}", realm.getName());
103  }
104  }
105  }
static final Logger logger
Definition: GeneratedRsaKeyProviderFactory.java:45
void generateKeys(RealmModel realm, ComponentModel model, int size)
Definition: GeneratedRsaKeyProviderFactory.java:107

メンバ詳解

◆ CONFIG_PROPERTIES

final List<ProviderConfigProperty> org.keycloak.keys.GeneratedRsaKeyProviderFactory.CONFIG_PROPERTIES
staticprivate
初期値:
= AbstractRsaKeyProviderFactory.configurationBuilder()
.property(Attributes.KEY_SIZE_PROPERTY)
.build()

◆ HELP_TEXT

final String org.keycloak.keys.GeneratedRsaKeyProviderFactory.HELP_TEXT = "Generates RSA keys and creates a self-signed certificate"
staticprivate

◆ ID

final String org.keycloak.keys.GeneratedRsaKeyProviderFactory.ID = "rsa-generated"
static

◆ logger

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

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