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

公開メンバ関数

KeyProvider create (KeycloakSession session, ComponentModel model)
 
boolean createFallbackKeys (KeycloakSession session, KeyUse keyUse, String algorithm)
 
String getHelpText ()
 
List< ProviderConfigPropertygetConfigProperties ()
 
String getId ()
 
void validateConfiguration (KeycloakSession session, RealmModel realm, ComponentModel model) throws ComponentValidationException
 
default ProviderType create (KeycloakSession session)
 
default void init (Config.Scope config)
 
default void postInit (KeycloakSessionFactory factory)
 
default void close ()
 
default void onCreate (KeycloakSession session, RealmModel realm, ComponentModel model)
 
default void onUpdate (KeycloakSession session, RealmModel realm, ComponentModel oldModel, ComponentModel newModel)
 
default void preRemove (KeycloakSession session, RealmModel realm, ComponentModel model)
 
default List< ProviderConfigPropertygetCommonProviderConfigProperties ()
 
default Map< String, Object > getTypeMetadata ()
 
default int order ()
 

静的公開メンバ関数

static final ProviderConfigurationBuilder configurationBuilder ()
 
static KeyPair generateEcdsaKeyPair (String keySpecName)
 
static String convertECDomainParmNistRepToSecRep (String ecInNistRep)
 
static String convertECDomainParmNistRepToAlgorithm (String ecInNistRep)
 
static String convertAlgorithmToECDomainParmNistRep (String algorithm)
 

静的公開変数類

static final String ID = "ecdsa-generated"
 
static final String DEFAULT_ECDSA_ELLIPTIC_CURVE = "P-256"
 

静的限定公開変数類

static final String ECDSA_PRIVATE_KEY_KEY = "ecdsaPrivateKey"
 
static final String ECDSA_PUBLIC_KEY_KEY = "ecdsaPublicKey"
 
static final String ECDSA_ELLIPTIC_CURVE_KEY = "ecdsaEllipticCurveKey"
 
static ProviderConfigProperty ECDSA_ELLIPTIC_CURVE_PROPERTY
 

非公開メンバ関数

void generateKeys (ComponentModel model, String ecInNistRep)
 

静的非公開変数類

static final Logger logger = Logger.getLogger(GeneratedEcdsaKeyProviderFactory.class)
 
static final String HELP_TEXT = "Generates ECDSA keys"
 
static final List< ProviderConfigPropertyCONFIG_PROPERTIES
 

詳解

関数詳解

◆ close()

default void org.keycloak.keys.KeyProviderFactory< T extends KeyProvider >.close ( )
inlineinherited

org.keycloak.provider.ProviderFactory< T extends Provider >を実装しています。

47  {
48  }

◆ configurationBuilder()

static final ProviderConfigurationBuilder org.keycloak.keys.AbstractEcdsaKeyProviderFactory.configurationBuilder ( )
inlinestaticinherited
46  {
47  return ProviderConfigurationBuilder.create()
48  .property(Attributes.PRIORITY_PROPERTY)
49  .property(Attributes.ENABLED_PROPERTY)
50  .property(Attributes.ACTIVE_PROPERTY);
51  }

◆ convertAlgorithmToECDomainParmNistRep()

static String org.keycloak.keys.AbstractEcdsaKeyProviderFactory.convertAlgorithmToECDomainParmNistRep ( String  algorithm)
inlinestaticinherited
105  {
106  switch(algorithm) {
107  case Algorithm.ES256 :
108  return "P-256";
109  case Algorithm.ES384 :
110  return "P-384";
111  case Algorithm.ES512 :
112  return "P-521";
113  default :
114  return null;
115  }
116  }

◆ convertECDomainParmNistRepToAlgorithm()

static String org.keycloak.keys.AbstractEcdsaKeyProviderFactory.convertECDomainParmNistRepToAlgorithm ( String  ecInNistRep)
inlinestaticinherited
92  {
93  switch(ecInNistRep) {
94  case "P-256" :
95  return Algorithm.ES256;
96  case "P-384" :
97  return Algorithm.ES384;
98  case "P-521" :
99  return Algorithm.ES512;
100  default :
101  return null;
102  }
103  }

◆ convertECDomainParmNistRepToSecRep()

static String org.keycloak.keys.AbstractEcdsaKeyProviderFactory.convertECDomainParmNistRepToSecRep ( String  ecInNistRep)
inlinestaticinherited
73  {
74  // convert Elliptic Curve Domain Parameter Name in NIST to SEC which is used to generate its EC key
75  String ecInSecRep = null;
76  switch(ecInNistRep) {
77  case "P-256" :
78  ecInSecRep = "secp256r1";
79  break;
80  case "P-384" :
81  ecInSecRep = "secp384r1";
82  break;
83  case "P-521" :
84  ecInSecRep = "secp521r1";
85  break;
86  default :
87  // return null
88  }
89  return ecInSecRep;
90  }

◆ create() [1/2]

default ProviderType org.keycloak.component.ComponentFactory< CreatedType, ProviderType extends Provider >.create ( KeycloakSession  session)
inlineinherited

org.keycloak.provider.ProviderFactory< T extends Provider >を実装しています。

38  {
39  return null;
40  }

◆ create() [2/2]

KeyProvider org.keycloak.keys.GeneratedEcdsaKeyProviderFactory.create ( KeycloakSession  session,
ComponentModel  model 
)
inline

org.keycloak.keys.KeyProviderFactory< T extends KeyProvider >を実装しています。

50  {
51  return new GeneratedEcdsaKeyProvider(session.getContext().getRealm(), model);
52  }

◆ createFallbackKeys()

boolean org.keycloak.keys.GeneratedEcdsaKeyProviderFactory.createFallbackKeys ( KeycloakSession  session,
KeyUse  keyUse,
String  algorithm 
)
inline

org.keycloak.keys.KeyProviderFactory< T extends KeyProvider >を実装しています。

55  {
56  if (keyUse.equals(KeyUse.SIG) && (algorithm.equals(Algorithm.ES256) || algorithm.equals(Algorithm.ES384) || algorithm.equals(Algorithm.ES512))) {
57  RealmModel realm = session.getContext().getRealm();
58 
59  ComponentModel generated = new ComponentModel();
60  generated.setName("fallback-" + algorithm);
61  generated.setParentId(realm.getId());
62  generated.setProviderId(ID);
63  generated.setProviderType(KeyProvider.class.getName());
64 
65  MultivaluedHashMap<String, String> config = new MultivaluedHashMap<>();
66  config.putSingle(Attributes.PRIORITY_KEY, "-100");
68  generated.setConfig(config);
69 
70  realm.addComponentModel(generated);
71 
72  return true;
73  } else {
74  return false;
75  }
76  }
static String convertAlgorithmToECDomainParmNistRep(String algorithm)
Definition: AbstractEcdsaKeyProviderFactory.java:105
static final String ECDSA_ELLIPTIC_CURVE_KEY
Definition: AbstractEcdsaKeyProviderFactory.java:39
static final String ID
Definition: GeneratedEcdsaKeyProviderFactory.java:38

◆ generateEcdsaKeyPair()

static KeyPair org.keycloak.keys.AbstractEcdsaKeyProviderFactory.generateEcdsaKeyPair ( String  keySpecName)
inlinestaticinherited
61  {
62  try {
63  KeyPairGenerator keyGen = KeyPairGenerator.getInstance("EC");
64  SecureRandom randomGen = SecureRandom.getInstance("SHA1PRNG");
65  ECGenParameterSpec ecSpec = new ECGenParameterSpec(keySpecName);
66  keyGen.initialize(ecSpec, randomGen);
67  return keyGen.generateKeyPair();
68  } catch (Exception e) {
69  throw new RuntimeException(e);
70  }
71  }

◆ generateKeys()

void org.keycloak.keys.GeneratedEcdsaKeyProviderFactory.generateKeys ( ComponentModel  model,
String  ecInNistRep 
)
inlineprivate
114  {
115  KeyPair keyPair;
116  try {
118  model.put(ECDSA_PRIVATE_KEY_KEY, Base64.encodeBytes(keyPair.getPrivate().getEncoded()));
119  model.put(ECDSA_PUBLIC_KEY_KEY, Base64.encodeBytes(keyPair.getPublic().getEncoded()));
120  model.put(ECDSA_ELLIPTIC_CURVE_KEY, ecInNistRep);
121  } catch (Throwable t) {
122  throw new ComponentValidationException("Failed to generate ECDSA keys", t);
123  }
124  }
static final String ECDSA_PUBLIC_KEY_KEY
Definition: AbstractEcdsaKeyProviderFactory.java:38
static String convertECDomainParmNistRepToSecRep(String ecInNistRep)
Definition: AbstractEcdsaKeyProviderFactory.java:73
static KeyPair generateEcdsaKeyPair(String keySpecName)
Definition: AbstractEcdsaKeyProviderFactory.java:61
static final String ECDSA_ELLIPTIC_CURVE_KEY
Definition: AbstractEcdsaKeyProviderFactory.java:39
static final String ECDSA_PRIVATE_KEY_KEY
Definition: AbstractEcdsaKeyProviderFactory.java:37

◆ getCommonProviderConfigProperties()

default List<ProviderConfigProperty> org.keycloak.component.ComponentFactory< CreatedType, ProviderType extends Provider >.getCommonProviderConfigProperties ( )
inlineinherited

These are config properties that are common across all implementation of this component type

戻り値

org.keycloak.storage.UserStorageProviderFactory< T extends UserStorageProvider >, org.keycloak.storage.client.ClientStorageProviderFactory< T extends ClientStorageProvider >で実装されています。

100  {
101  return Collections.EMPTY_LIST;
102  }

◆ getConfigProperties()

List<ProviderConfigProperty> org.keycloak.keys.GeneratedEcdsaKeyProviderFactory.getConfigProperties ( )
inline

org.keycloak.provider.ConfiguredProviderを実装しています。

84  {
85  return CONFIG_PROPERTIES;
86  }
static final List< ProviderConfigProperty > CONFIG_PROPERTIES
Definition: GeneratedEcdsaKeyProviderFactory.java:45

◆ getHelpText()

String org.keycloak.keys.GeneratedEcdsaKeyProviderFactory.getHelpText ( )
inline

org.keycloak.provider.ConfiguredProviderを実装しています。

79  {
80  return HELP_TEXT;
81  }
static final String HELP_TEXT
Definition: GeneratedEcdsaKeyProviderFactory.java:40

◆ getId()

String org.keycloak.keys.GeneratedEcdsaKeyProviderFactory.getId ( )
inline

org.keycloak.provider.ProviderFactory< T extends Provider >を実装しています。

89  {
90  return ID;
91  }
static final String ID
Definition: GeneratedEcdsaKeyProviderFactory.java:38

◆ getTypeMetadata()

default Map<String, Object> org.keycloak.component.ComponentFactory< CreatedType, ProviderType extends Provider >.getTypeMetadata ( )
inlineinherited

This is metadata about this component type. Its really configuration information about the component type and not an individual instance

戻り値

org.keycloak.storage.UserStorageProviderFactory< T extends UserStorageProvider >, org.keycloak.storage.client.ClientStorageProviderFactory< T extends ClientStorageProvider >で実装されています。

111  {
112  return Collections.EMPTY_MAP;
113 
114  }

◆ init()

default void org.keycloak.keys.KeyProviderFactory< T extends KeyProvider >.init ( Config.Scope  config)
inlineinherited

org.keycloak.provider.ProviderFactory< T extends Provider >を実装しています。

39  {
40  }

◆ onCreate()

default void org.keycloak.component.ComponentFactory< CreatedType, ProviderType extends Provider >.onCreate ( KeycloakSession  session,
RealmModel  realm,
ComponentModel  model 
)
inlineinherited

◆ onUpdate()

default void org.keycloak.component.ComponentFactory< CreatedType, ProviderType extends Provider >.onUpdate ( KeycloakSession  session,
RealmModel  realm,
ComponentModel  oldModel,
ComponentModel  newModel 
)
inlineinherited

Called after the component is updated.

引数
session
realm
oldModelold saved model
newModelnew configuration

org.keycloak.storage.ldap.LDAPStorageProviderFactory, org.keycloak.federation.kerberos.KerberosFederationProviderFactoryで実装されています。

78  {
79 
80  }

◆ order()

default int org.keycloak.provider.ProviderFactory< T extends Provider >.order ( )
inlineinherited

◆ postInit()

default void org.keycloak.keys.KeyProviderFactory< T extends KeyProvider >.postInit ( KeycloakSessionFactory  factory)
inlineinherited

org.keycloak.provider.ProviderFactory< T extends Provider >を実装しています。

43  {
44  }

◆ preRemove()

default void org.keycloak.component.ComponentFactory< CreatedType, ProviderType extends Provider >.preRemove ( KeycloakSession  session,
RealmModel  realm,
ComponentModel  model 
)
inlineinherited

Called before the component is removed.

引数
session
realm
modelmodel of the component, which is going to be removed

org.keycloak.storage.ldap.LDAPStorageProviderFactory, org.keycloak.federation.kerberos.KerberosFederationProviderFactoryで実装されています。

90  {
91 
92  }

◆ validateConfiguration()

void org.keycloak.keys.GeneratedEcdsaKeyProviderFactory.validateConfiguration ( KeycloakSession  session,
RealmModel  realm,
ComponentModel  model 
) throws ComponentValidationException
inline

org.keycloak.component.ComponentFactory< CreatedType, ProviderType extends Provider >を実装しています。

94  {
95  super.validateConfiguration(session, realm, model);
96 
97  ConfigurationValidationHelper.check(model).checkList(ECDSA_ELLIPTIC_CURVE_PROPERTY, false);
98 
99  String ecInNistRep = model.get(ECDSA_ELLIPTIC_CURVE_KEY);
100  if (ecInNistRep == null) ecInNistRep = DEFAULT_ECDSA_ELLIPTIC_CURVE;
101 
102  if (!(model.contains(ECDSA_PRIVATE_KEY_KEY) && model.contains(ECDSA_PUBLIC_KEY_KEY))) {
103  generateKeys(model, ecInNistRep);
104  logger.debugv("Generated keys for {0}", realm.getName());
105  } else {
106  String currentEc = model.get(ECDSA_ELLIPTIC_CURVE_KEY);
107  if (!ecInNistRep.equals(currentEc)) {
108  generateKeys(model, ecInNistRep);
109  logger.debugv("Elliptic Curve changed, generating new keys for {0}", realm.getName());
110  }
111  }
112  }
void generateKeys(ComponentModel model, String ecInNistRep)
Definition: GeneratedEcdsaKeyProviderFactory.java:114
static final String ECDSA_PUBLIC_KEY_KEY
Definition: AbstractEcdsaKeyProviderFactory.java:38
static final String ECDSA_ELLIPTIC_CURVE_KEY
Definition: AbstractEcdsaKeyProviderFactory.java:39
static ProviderConfigProperty ECDSA_ELLIPTIC_CURVE_PROPERTY
Definition: AbstractEcdsaKeyProviderFactory.java:42
static final String DEFAULT_ECDSA_ELLIPTIC_CURVE
Definition: GeneratedEcdsaKeyProviderFactory.java:43
static final String ECDSA_PRIVATE_KEY_KEY
Definition: AbstractEcdsaKeyProviderFactory.java:37
static final Logger logger
Definition: GeneratedEcdsaKeyProviderFactory.java:36

メンバ詳解

◆ CONFIG_PROPERTIES

final List<ProviderConfigProperty> org.keycloak.keys.GeneratedEcdsaKeyProviderFactory.CONFIG_PROPERTIES
staticprivate
初期値:
= AbstractEcdsaKeyProviderFactory.configurationBuilder()
.build()

◆ DEFAULT_ECDSA_ELLIPTIC_CURVE

final String org.keycloak.keys.GeneratedEcdsaKeyProviderFactory.DEFAULT_ECDSA_ELLIPTIC_CURVE = "P-256"
static

◆ ECDSA_ELLIPTIC_CURVE_KEY

final String org.keycloak.keys.AbstractEcdsaKeyProviderFactory.ECDSA_ELLIPTIC_CURVE_KEY = "ecdsaEllipticCurveKey"
staticprotectedinherited

◆ ECDSA_ELLIPTIC_CURVE_PROPERTY

ProviderConfigProperty org.keycloak.keys.AbstractEcdsaKeyProviderFactory.ECDSA_ELLIPTIC_CURVE_PROPERTY
staticprotectedinherited
初期値:
= new ProviderConfigProperty(ECDSA_ELLIPTIC_CURVE_KEY, "Elliptic Curve", "Elliptic Curve used in ECDSA", LIST_TYPE,
String.valueOf(GeneratedEcdsaKeyProviderFactory.DEFAULT_ECDSA_ELLIPTIC_CURVE),
"P-256", "P-384", "P-521")

◆ ECDSA_PRIVATE_KEY_KEY

final String org.keycloak.keys.AbstractEcdsaKeyProviderFactory.ECDSA_PRIVATE_KEY_KEY = "ecdsaPrivateKey"
staticprotectedinherited

◆ ECDSA_PUBLIC_KEY_KEY

final String org.keycloak.keys.AbstractEcdsaKeyProviderFactory.ECDSA_PUBLIC_KEY_KEY = "ecdsaPublicKey"
staticprotectedinherited

◆ HELP_TEXT

final String org.keycloak.keys.GeneratedEcdsaKeyProviderFactory.HELP_TEXT = "Generates ECDSA keys"
staticprivate

◆ ID

final String org.keycloak.keys.GeneratedEcdsaKeyProviderFactory.ID = "ecdsa-generated"
static

◆ logger

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

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