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

公開メンバ関数

 SHA256PairwiseSubMapper ()
 
void validateAdditionalConfig (KeycloakSession session, RealmModel realm, ProtocolMapperContainerModel mapperContainer, ProtocolMapperModel mapperModel) throws ProtocolMapperConfigException
 
String getHelpText ()
 
List< ProviderConfigProperty > getAdditionalConfigProperties ()
 
String generateSub (ProtocolMapperModel mappingModel, String sectorIdentifier, String localSub)
 
String getDisplayType ()
 
String getIdPrefix ()
 
final String getDisplayCategory ()
 
IDToken transformIDToken (IDToken token, ProtocolMapperModel mappingModel, KeycloakSession session, UserSessionModel userSession, AuthenticatedClientSessionModel clientSession)
 
AccessToken transformAccessToken (AccessToken token, ProtocolMapperModel mappingModel, KeycloakSession session, UserSessionModel userSession, AuthenticatedClientSessionModel clientSession)
 
AccessToken transformUserInfoToken (AccessToken token, ProtocolMapperModel mappingModel, KeycloakSession session, UserSessionModel userSession, AuthenticatedClientSessionModel clientSession)
 
final List< ProviderConfigProperty > getConfigProperties ()
 
final void validateConfig (KeycloakSession session, RealmModel realm, ProtocolMapperContainerModel mapperContainer, ProtocolMapperModel mapperModel) throws ProtocolMapperConfigException
 
final String getId ()
 
String getProtocol ()
 
void close ()
 
final ProtocolMapper create (KeycloakSession session)
 
void init (Config.Scope config)
 
void postInit (KeycloakSessionFactory factory)
 

静的公開メンバ関数

static ProtocolMapperRepresentation createPairwiseMapper (String sectorIdentifierUri, String salt)
 

静的公開変数類

static final String PROVIDER_ID = "sha256"
 
static final String PROVIDER_ID_SUFFIX = "-pairwise-sub-mapper"
 
static final String TOKEN_MAPPER_CATEGORY = "Token mapper"
 

限定公開メンバ関数

void setIDTokenSubject (IDToken token, String pairwiseSub)
 
void setAccessTokenSubject (IDToken token, String pairwiseSub)
 
void setUserInfoTokenSubject (IDToken token, String pairwiseSub)
 
void setClaim (IDToken token, ProtocolMapperModel mappingModel, UserSessionModel userSession)
 
void setClaim (IDToken token, ProtocolMapperModel mappingModel, UserSessionModel userSession, KeycloakSession keycloakSession)
 

非公開メンバ関数

String generateSub (String sectorIdentifier, String localSub, byte[] salt)
 

静的非公開メンバ関数

static String generateSalt ()
 

非公開変数類

final Charset charset
 

静的非公開変数類

static final String HASH_ALGORITHM = "SHA-256"
 
static final Logger logger = Logger.getLogger(SHA256PairwiseSubMapper.class)
 

詳解

構築子と解体子

◆ SHA256PairwiseSubMapper()

org.keycloak.protocol.oidc.mappers.SHA256PairwiseSubMapper.SHA256PairwiseSubMapper ( )
inline
29  {
30  charset = Charset.forName("UTF-8");
31  }
final Charset charset
Definition: SHA256PairwiseSubMapper.java:27

関数詳解

◆ close()

void org.keycloak.protocol.oidc.mappers.AbstractOIDCProtocolMapper.close ( )
inlineinherited
45  {
46 
47  }

◆ create()

final ProtocolMapper org.keycloak.protocol.oidc.mappers.AbstractOIDCProtocolMapper.create ( KeycloakSession  session)
inlineinherited
50  {
51  throw new RuntimeException("UNSUPPORTED METHOD");
52  }

◆ createPairwiseMapper()

static ProtocolMapperRepresentation org.keycloak.protocol.oidc.mappers.SHA256PairwiseSubMapper.createPairwiseMapper ( String  sectorIdentifierUri,
String  salt 
)
inlinestatic
33  {
34  Map<String, String> config;
35  ProtocolMapperRepresentation pairwise = new ProtocolMapperRepresentation();
36  pairwise.setName("pairwise subject identifier");
37  pairwise.setProtocolMapper(new SHA256PairwiseSubMapper().getId());
38  pairwise.setProtocol(OIDCLoginProtocol.LOGIN_PROTOCOL);
39  config = new HashMap<>();
40  config.put(PairwiseSubMapperHelper.SECTOR_IDENTIFIER_URI, sectorIdentifierUri);
41  if (salt == null) {
42  salt = KeycloakModelUtils.generateId();
43  }
44  config.put(PairwiseSubMapperHelper.PAIRWISE_SUB_ALGORITHM_SALT, salt);
45  pairwise.setConfig(config);
46  return pairwise;
47  }
SHA256PairwiseSubMapper()
Definition: SHA256PairwiseSubMapper.java:29
final String getId()
Definition: AbstractPairwiseSubMapper.java:123

◆ generateSalt()

static String org.keycloak.protocol.oidc.mappers.SHA256PairwiseSubMapper.generateSalt ( )
inlinestaticprivate
98  {
99  return KeycloakModelUtils.generateId();
100  }

◆ generateSub() [1/2]

String org.keycloak.protocol.oidc.mappers.SHA256PairwiseSubMapper.generateSub ( ProtocolMapperModel  mappingModel,
String  sectorIdentifier,
String  localSub 
)
inline
72  {
73  String saltStr = PairwiseSubMapperHelper.getSalt(mappingModel);
74  if (saltStr == null) {
75  throw new IllegalStateException("Salt not available on mappingModel. Please update protocol mapper");
76  }
77 
78  Charset charset = Charset.forName("UTF-8");
79  byte[] salt = saltStr.getBytes(charset);
80  String pairwiseSub = generateSub(sectorIdentifier, localSub, salt);
81  logger.tracef("local sub = '%s', pairwise sub = '%s'", localSub, pairwiseSub);
82  return pairwiseSub;
83  }
static final Logger logger
Definition: SHA256PairwiseSubMapper.java:26
String generateSub(ProtocolMapperModel mappingModel, String sectorIdentifier, String localSub)
Definition: SHA256PairwiseSubMapper.java:72
final Charset charset
Definition: SHA256PairwiseSubMapper.java:27

◆ generateSub() [2/2]

String org.keycloak.protocol.oidc.mappers.SHA256PairwiseSubMapper.generateSub ( String  sectorIdentifier,
String  localSub,
byte []  salt 
)
inlineprivate
85  {
86  MessageDigest sha256;
87  try {
88  sha256 = MessageDigest.getInstance(HASH_ALGORITHM);
89  } catch (NoSuchAlgorithmException e) {
90  throw new IllegalStateException(e.getMessage(), e);
91  }
92  sha256.update(sectorIdentifier.getBytes(charset));
93  sha256.update(localSub.getBytes(charset));
94  byte[] hash = sha256.digest(salt);
95  return UUID.nameUUIDFromBytes(hash).toString();
96  }
static final String HASH_ALGORITHM
Definition: SHA256PairwiseSubMapper.java:25
final Charset charset
Definition: SHA256PairwiseSubMapper.java:27

◆ getAdditionalConfigProperties()

List<ProviderConfigProperty> org.keycloak.protocol.oidc.mappers.SHA256PairwiseSubMapper.getAdditionalConfigProperties ( )
inline
65  {
66  List<ProviderConfigProperty> configProperties = new LinkedList<>();
67  configProperties.add(PairwiseSubMapperHelper.createSaltConfig());
68  return configProperties;
69  }

◆ getConfigProperties()

final List<ProviderConfigProperty> org.keycloak.protocol.oidc.mappers.AbstractPairwiseSubMapper.getConfigProperties ( )
inlineinherited
97  {
98  List<ProviderConfigProperty> configProperties = new LinkedList<>();
99  configProperties.add(PairwiseSubMapperHelper.createSectorIdentifierConfig());
100  configProperties.addAll(getAdditionalConfigProperties());
101  return configProperties;
102  }
List< ProviderConfigProperty > getAdditionalConfigProperties()
Definition: AbstractPairwiseSubMapper.java:45

◆ getDisplayCategory()

final String org.keycloak.protocol.oidc.mappers.AbstractPairwiseSubMapper.getDisplayCategory ( )
inlineinherited
62  {
63  return AbstractOIDCProtocolMapper.TOKEN_MAPPER_CATEGORY;
64  }

◆ getDisplayType()

String org.keycloak.protocol.oidc.mappers.SHA256PairwiseSubMapper.getDisplayType ( )
inline
103  {
104  return "Pairwise subject identifier";
105  }

◆ getHelpText()

String org.keycloak.protocol.oidc.mappers.SHA256PairwiseSubMapper.getHelpText ( )
inline
60  {
61  return "Calculates a pairwise subject identifier using a salted sha-256 hash. See OpenID Connect specification for more info about pairwise subject identifiers.";
62  }

◆ getId()

final String org.keycloak.protocol.oidc.mappers.AbstractPairwiseSubMapper.getId ( )
inlineinherited
123  {
124  return "oidc-" + getIdPrefix() + PROVIDER_ID_SUFFIX;
125  }
static final String PROVIDER_ID_SUFFIX
Definition: AbstractPairwiseSubMapper.java:26

◆ getIdPrefix()

String org.keycloak.protocol.oidc.mappers.SHA256PairwiseSubMapper.getIdPrefix ( )
inline
108  {
109  return PROVIDER_ID;
110  }
static final String PROVIDER_ID
Definition: SHA256PairwiseSubMapper.java:24

◆ getProtocol()

String org.keycloak.protocol.oidc.mappers.AbstractOIDCProtocolMapper.getProtocol ( )
inlineinherited
40  {
41  return OIDCLoginProtocol.LOGIN_PROTOCOL;
42  }

◆ init()

void org.keycloak.protocol.oidc.mappers.AbstractOIDCProtocolMapper.init ( Config.Scope  config)
inlineinherited
55  {
56  }

◆ postInit()

void org.keycloak.protocol.oidc.mappers.AbstractOIDCProtocolMapper.postInit ( KeycloakSessionFactory  factory)
inlineinherited
59  {
60 
61  }

◆ setAccessTokenSubject()

void org.keycloak.protocol.oidc.mappers.AbstractPairwiseSubMapper.setAccessTokenSubject ( IDToken  token,
String  pairwiseSub 
)
inlineprotectedinherited
88  {
89  token.setSubject(pairwiseSub);
90  }

◆ setClaim() [1/2]

void org.keycloak.protocol.oidc.mappers.AbstractOIDCProtocolMapper.setClaim ( IDToken  token,
ProtocolMapperModel  mappingModel,
UserSessionModel  userSession 
)
inlineprotectedinherited

Intended to be overridden in ProtocolMapper implementations to add claims to an token.

引数
token
mappingModel
userSession
非推奨:
override setClaim(IDToken, ProtocolMapperModel, UserSessionModel, KeycloakSession) instead.
105  {
106  }

◆ setClaim() [2/2]

void org.keycloak.protocol.oidc.mappers.AbstractOIDCProtocolMapper.setClaim ( IDToken  token,
ProtocolMapperModel  mappingModel,
UserSessionModel  userSession,
KeycloakSession  keycloakSession 
)
inlineprotectedinherited

Intended to be overridden in ProtocolMapper implementations to add claims to an token.

引数
token
mappingModel
userSession
keycloakSession
115  {
116  // we delegate to the old #setClaim(...) method for backwards compatibility
117  setClaim(token, mappingModel, userSession);
118  }
void setClaim(IDToken token, ProtocolMapperModel mappingModel, UserSessionModel userSession)
Definition: AbstractOIDCProtocolMapper.java:105

◆ setIDTokenSubject()

void org.keycloak.protocol.oidc.mappers.AbstractPairwiseSubMapper.setIDTokenSubject ( IDToken  token,
String  pairwiseSub 
)
inlineprotectedinherited
84  {
85  token.setSubject(pairwiseSub);
86  }

◆ setUserInfoTokenSubject()

void org.keycloak.protocol.oidc.mappers.AbstractPairwiseSubMapper.setUserInfoTokenSubject ( IDToken  token,
String  pairwiseSub 
)
inlineprotectedinherited
92  {
93  token.getOtherClaims().put("sub", pairwiseSub);
94  }

◆ transformAccessToken()

AccessToken org.keycloak.protocol.oidc.mappers.AbstractPairwiseSubMapper.transformAccessToken ( AccessToken  token,
ProtocolMapperModel  mappingModel,
KeycloakSession  session,
UserSessionModel  userSession,
AuthenticatedClientSessionModel  clientSession 
)
inlineinherited

org.keycloak.protocol.oidc.mappers.OIDCAccessTokenMapperを実装しています。

73  {
74  setAccessTokenSubject(token, generateSub(mappingModel, getSectorIdentifier(clientSession.getClient(), mappingModel), userSession.getUser().getId()));
75  return token;
76  }
abstract String generateSub(ProtocolMapperModel mappingModel, String sectorIdentifier, String localSub)
String getSectorIdentifier(ClientModel client, ProtocolMapperModel mappingModel)
Definition: AbstractPairwiseSubMapper.java:104
void setAccessTokenSubject(IDToken token, String pairwiseSub)
Definition: AbstractPairwiseSubMapper.java:88

◆ transformIDToken()

IDToken org.keycloak.protocol.oidc.mappers.AbstractPairwiseSubMapper.transformIDToken ( IDToken  token,
ProtocolMapperModel  mappingModel,
KeycloakSession  session,
UserSessionModel  userSession,
AuthenticatedClientSessionModel  clientSession 
)
inlineinherited

org.keycloak.protocol.oidc.mappers.OIDCIDTokenMapperを実装しています。

67  {
68  setIDTokenSubject(token, generateSub(mappingModel, getSectorIdentifier(clientSession.getClient(), mappingModel), userSession.getUser().getId()));
69  return token;
70  }
abstract String generateSub(ProtocolMapperModel mappingModel, String sectorIdentifier, String localSub)
String getSectorIdentifier(ClientModel client, ProtocolMapperModel mappingModel)
Definition: AbstractPairwiseSubMapper.java:104
void setIDTokenSubject(IDToken token, String pairwiseSub)
Definition: AbstractPairwiseSubMapper.java:84

◆ transformUserInfoToken()

AccessToken org.keycloak.protocol.oidc.mappers.AbstractPairwiseSubMapper.transformUserInfoToken ( AccessToken  token,
ProtocolMapperModel  mappingModel,
KeycloakSession  session,
UserSessionModel  userSession,
AuthenticatedClientSessionModel  clientSession 
)
inlineinherited

org.keycloak.protocol.oidc.mappers.UserInfoTokenMapperを実装しています。

79  {
80  setUserInfoTokenSubject(token, generateSub(mappingModel, getSectorIdentifier(clientSession.getClient(), mappingModel), userSession.getUser().getId()));
81  return token;
82  }
void setUserInfoTokenSubject(IDToken token, String pairwiseSub)
Definition: AbstractPairwiseSubMapper.java:92
abstract String generateSub(ProtocolMapperModel mappingModel, String sectorIdentifier, String localSub)
String getSectorIdentifier(ClientModel client, ProtocolMapperModel mappingModel)
Definition: AbstractPairwiseSubMapper.java:104

◆ validateAdditionalConfig()

void org.keycloak.protocol.oidc.mappers.SHA256PairwiseSubMapper.validateAdditionalConfig ( KeycloakSession  session,
RealmModel  realm,
ProtocolMapperContainerModel  mapperContainer,
ProtocolMapperModel  mapperModel 
) throws ProtocolMapperConfigException
inline
50  {
51  // Generate random salt if needed
52  String salt = PairwiseSubMapperHelper.getSalt(mapperModel);
53  if (salt == null || salt.trim().isEmpty()) {
54  salt = generateSalt();
55  PairwiseSubMapperHelper.setSalt(mapperModel, salt);
56  }
57  }
static String generateSalt()
Definition: SHA256PairwiseSubMapper.java:98

◆ validateConfig()

final void org.keycloak.protocol.oidc.mappers.AbstractPairwiseSubMapper.validateConfig ( KeycloakSession  session,
RealmModel  realm,
ProtocolMapperContainerModel  mapperContainer,
ProtocolMapperModel  mapperModel 
) throws ProtocolMapperConfigException
inlineinherited
113  {
114  ClientModel client = null;
115  if (mapperContainer instanceof ClientModel) {
116  client = (ClientModel) mapperContainer;
117  PairwiseSubMapperValidator.validate(session, client, mapperModel);
118  }
119  validateAdditionalConfig(session, realm, mapperContainer, mapperModel);
120  }
void validateAdditionalConfig(KeycloakSession session, RealmModel realm, ProtocolMapperContainerModel mapperContainer, ProtocolMapperModel mapperModel)
Definition: AbstractPairwiseSubMapper.java:58

メンバ詳解

◆ charset

final Charset org.keycloak.protocol.oidc.mappers.SHA256PairwiseSubMapper.charset
private

◆ HASH_ALGORITHM

final String org.keycloak.protocol.oidc.mappers.SHA256PairwiseSubMapper.HASH_ALGORITHM = "SHA-256"
staticprivate

◆ logger

final Logger org.keycloak.protocol.oidc.mappers.SHA256PairwiseSubMapper.logger = Logger.getLogger(SHA256PairwiseSubMapper.class)
staticprivate

◆ PROVIDER_ID

final String org.keycloak.protocol.oidc.mappers.SHA256PairwiseSubMapper.PROVIDER_ID = "sha256"
static

◆ PROVIDER_ID_SUFFIX

final String org.keycloak.protocol.oidc.mappers.AbstractPairwiseSubMapper.PROVIDER_ID_SUFFIX = "-pairwise-sub-mapper"
staticinherited

◆ TOKEN_MAPPER_CATEGORY

final String org.keycloak.protocol.oidc.mappers.AbstractOIDCProtocolMapper.TOKEN_MAPPER_CATEGORY = "Token mapper"
staticinherited

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