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

公開メンバ関数

List< ProviderConfigProperty > getConfigProperties ()
 
String getId ()
 
String [] getCompatibleProviders ()
 
String getDisplayCategory ()
 
String getDisplayType ()
 
void preprocessFederatedIdentity (KeycloakSession session, RealmModel realm, IdentityProviderMapperModel mapperModel, BrokeredIdentityContext context)
 
void updateBrokeredUser (KeycloakSession session, RealmModel realm, UserModel user, IdentityProviderMapperModel mapperModel, BrokeredIdentityContext context)
 
String getHelpText ()
 
boolean valueEquals (String desiredValue, Object value)
 

静的公開メンバ関数

static Object getClaimValue (JsonWebToken token, String claim)
 
static Object getClaimValue (IdentityProviderMapperModel mapperModel, BrokeredIdentityContext context)
 
static Object getClaimValue (BrokeredIdentityContext context, String claim)
 

静的公開変数類

static final String [] COMPATIBLE_PROVIDERS = {KeycloakOIDCIdentityProviderFactory.PROVIDER_ID, OIDCIdentityProviderFactory.PROVIDER_ID}
 
static final String USER_ATTRIBUTE = "user.attribute"
 
static final String EMAIL = "email"
 
static final String FIRST_NAME = "firstName"
 
static final String LAST_NAME = "lastName"
 
static final String PROVIDER_ID = "oidc-user-attribute-idp-mapper"
 
static final String CLAIM = "claim"
 
static final String CLAIM_VALUE = "claim.value"
 

限定公開メンバ関数

boolean hasClaimValue (IdentityProviderMapperModel mapperModel, BrokeredIdentityContext context)
 

静的関数

 [static initializer]
 

非公開メンバ関数

void setIfNotEmpty (Consumer< String > consumer, List< String > values)
 
List< String > toList (Object value)
 

静的非公開変数類

static final List< ProviderConfigProperty > configProperties = new ArrayList<>()
 

詳解

著者
Bill Burke
バージョン
Revision
1

関数詳解

◆ [static initializer]()

org.keycloak.broker.oidc.mappers.UserAttributeMapper.[static initializer] ( )
inlinestaticpackage

◆ getClaimValue() [1/3]

static Object org.keycloak.broker.oidc.mappers.AbstractClaimMapper.getClaimValue ( JsonWebToken  token,
String  claim 
)
inlinestaticinherited
43  {
44  List<String> split = OIDCAttributeMapperHelper.splitClaimPath(claim);
45  Map<String, Object> jsonObject = token.getOtherClaims();
46  final int length = split.size();
47  int i = 0;
48  for (String component : split) {
49  i++;
50  if (i == length) {
51  return jsonObject.get(component);
52  } else {
53  Object val = jsonObject.get(component);
54  if (!(val instanceof Map)) return null;
55  jsonObject = (Map<String, Object>)val;
56  }
57  }
58  return null;
59  }

◆ getClaimValue() [2/3]

static Object org.keycloak.broker.oidc.mappers.AbstractClaimMapper.getClaimValue ( IdentityProviderMapperModel  mapperModel,
BrokeredIdentityContext  context 
)
inlinestaticinherited
61  {
62  String claim = mapperModel.getConfig().get(CLAIM);
63  return getClaimValue(context, claim);
64  }
static final String CLAIM
Definition: AbstractClaimMapper.java:40
static Object getClaimValue(JsonWebToken token, String claim)
Definition: AbstractClaimMapper.java:43

◆ getClaimValue() [3/3]

static Object org.keycloak.broker.oidc.mappers.AbstractClaimMapper.getClaimValue ( BrokeredIdentityContext  context,
String  claim 
)
inlinestaticinherited
66  {
67  { // search access token
68  JsonWebToken token = (JsonWebToken)context.getContextData().get(KeycloakOIDCIdentityProvider.VALIDATED_ACCESS_TOKEN);
69  if (token != null) {
70  Object value = getClaimValue(token, claim);
71  if (value != null) return value;
72  }
73 
74  }
75  { // search ID Token
76  JsonWebToken token = (JsonWebToken)context.getContextData().get(KeycloakOIDCIdentityProvider.VALIDATED_ID_TOKEN);
77  if (token != null) {
78  Object value = getClaimValue(token, claim);
79  if (value != null) return value;
80  }
81 
82  }
83  {
84  // Search the OIDC UserInfo claim set (if any)
85  JsonNode profileJsonNode = (JsonNode) context.getContextData().get(OIDCIdentityProvider.USER_INFO);
86  Object value = AbstractJsonUserAttributeMapper.getJsonValue(profileJsonNode, claim);
87  if (value != null) return value;
88  }
89  return null;
90  }
static Object getClaimValue(JsonWebToken token, String claim)
Definition: AbstractClaimMapper.java:43

◆ getCompatibleProviders()

String [] org.keycloak.broker.oidc.mappers.UserAttributeMapper.getCompatibleProviders ( )
inline
83  {
84  return COMPATIBLE_PROVIDERS;
85  }
static final String [] COMPATIBLE_PROVIDERS
Definition: UserAttributeMapper.java:44

◆ getConfigProperties()

List<ProviderConfigProperty> org.keycloak.broker.oidc.mappers.UserAttributeMapper.getConfigProperties ( )
inline
73  {
74  return configProperties;
75  }
static final List< ProviderConfigProperty > configProperties
Definition: UserAttributeMapper.java:46

◆ getDisplayCategory()

String org.keycloak.broker.oidc.mappers.UserAttributeMapper.getDisplayCategory ( )
inline
88  {
89  return "Attribute Importer";
90  }

◆ getDisplayType()

String org.keycloak.broker.oidc.mappers.UserAttributeMapper.getDisplayType ( )
inline
93  {
94  return "Attribute Importer";
95  }

◆ getHelpText()

String org.keycloak.broker.oidc.mappers.UserAttributeMapper.getHelpText ( )
inline
163  {
164  return "Import declared claim if it exists in ID, access token or the claim set returned by the user profile endpoint into the specified user property or attribute.";
165  }

◆ getId()

String org.keycloak.broker.oidc.mappers.UserAttributeMapper.getId ( )
inline
78  {
79  return PROVIDER_ID;
80  }
static final String PROVIDER_ID
Definition: UserAttributeMapper.java:70

◆ hasClaimValue()

boolean org.keycloak.broker.oidc.mappers.AbstractClaimMapper.hasClaimValue ( IdentityProviderMapperModel  mapperModel,
BrokeredIdentityContext  context 
)
inlineprotectedinherited
93  {
94  Object value = getClaimValue(mapperModel, context);
95  String desiredValue = mapperModel.getConfig().get(CLAIM_VALUE);
96  return valueEquals(desiredValue, value);
97  }
boolean valueEquals(String desiredValue, Object value)
Definition: AbstractClaimMapper.java:99
static final String CLAIM_VALUE
Definition: AbstractClaimMapper.java:41
static Object getClaimValue(JsonWebToken token, String claim)
Definition: AbstractClaimMapper.java:43

◆ preprocessFederatedIdentity()

void org.keycloak.broker.oidc.mappers.UserAttributeMapper.preprocessFederatedIdentity ( KeycloakSession  session,
RealmModel  realm,
IdentityProviderMapperModel  mapperModel,
BrokeredIdentityContext  context 
)
inline
98  {
99  String attribute = mapperModel.getConfig().get(USER_ATTRIBUTE);
100  if(StringUtil.isNullOrEmpty(attribute)){
101  return;
102  }
103  Object value = getClaimValue(mapperModel, context);
104  List<String> values = toList(value);
105 
106  if (EMAIL.equalsIgnoreCase(attribute)) {
107  setIfNotEmpty(context::setEmail, values);
108  } else if (FIRST_NAME.equalsIgnoreCase(attribute)) {
109  setIfNotEmpty(context::setFirstName, values);
110  } else if (LAST_NAME.equalsIgnoreCase(attribute)) {
111  setIfNotEmpty(context::setLastName, values);
112  } else {
113  List<String> valuesToString = values.stream()
114  .filter(Objects::nonNull)
115  .map(Object::toString)
116  .collect(Collectors.toList());
117 
118  context.setUserAttribute(attribute, valuesToString);
119  }
120  }
static final String EMAIL
Definition: UserAttributeMapper.java:49
static final String USER_ATTRIBUTE
Definition: UserAttributeMapper.java:48
void setIfNotEmpty(Consumer< String > consumer, List< String > values)
Definition: UserAttributeMapper.java:122
static final String LAST_NAME
Definition: UserAttributeMapper.java:51
List< String > toList(Object value)
Definition: UserAttributeMapper.java:128
static final String FIRST_NAME
Definition: UserAttributeMapper.java:50
static Object getClaimValue(JsonWebToken token, String claim)
Definition: AbstractClaimMapper.java:43

◆ setIfNotEmpty()

void org.keycloak.broker.oidc.mappers.UserAttributeMapper.setIfNotEmpty ( Consumer< String >  consumer,
List< String >  values 
)
inlineprivate
122  {
123  if (values != null && !values.isEmpty()) {
124  consumer.accept(values.get(0));
125  }
126  }

◆ toList()

List<String> org.keycloak.broker.oidc.mappers.UserAttributeMapper.toList ( Object  value)
inlineprivate
128  {
129  List<Object> values = (value instanceof List)
130  ? (List) value
131  : Collections.singletonList(value);
132  return values.stream()
133  .filter(Objects::nonNull)
134  .map(Object::toString)
135  .collect(Collectors.toList());
136  }

◆ updateBrokeredUser()

void org.keycloak.broker.oidc.mappers.UserAttributeMapper.updateBrokeredUser ( KeycloakSession  session,
RealmModel  realm,
UserModel  user,
IdentityProviderMapperModel  mapperModel,
BrokeredIdentityContext  context 
)
inline
139  {
140  String attribute = mapperModel.getConfig().get(USER_ATTRIBUTE);
141  if(StringUtil.isNullOrEmpty(attribute)){
142  return;
143  }
144  Object value = getClaimValue(mapperModel, context);
145  List<String> values = toList(value);
146  if (EMAIL.equalsIgnoreCase(attribute)) {
147  setIfNotEmpty(user::setEmail, values);
148  } else if (FIRST_NAME.equalsIgnoreCase(attribute)) {
149  setIfNotEmpty(user::setFirstName, values);
150  } else if (LAST_NAME.equalsIgnoreCase(attribute)) {
151  setIfNotEmpty(user::setLastName, values);
152  } else {
153  List<String> current = user.getAttribute(attribute);
154  if (!CollectionUtil.collectionEquals(values, current)) {
155  user.setAttribute(attribute, values);
156  } else if (values.isEmpty()) {
157  user.removeAttribute(attribute);
158  }
159  }
160  }
static final String EMAIL
Definition: UserAttributeMapper.java:49
static final String USER_ATTRIBUTE
Definition: UserAttributeMapper.java:48
void setIfNotEmpty(Consumer< String > consumer, List< String > values)
Definition: UserAttributeMapper.java:122
static final String LAST_NAME
Definition: UserAttributeMapper.java:51
List< String > toList(Object value)
Definition: UserAttributeMapper.java:128
static final String FIRST_NAME
Definition: UserAttributeMapper.java:50
static Object getClaimValue(JsonWebToken token, String claim)
Definition: AbstractClaimMapper.java:43

◆ valueEquals()

boolean org.keycloak.broker.oidc.mappers.AbstractClaimMapper.valueEquals ( String  desiredValue,
Object  value 
)
inlineinherited
99  {
100  if (value instanceof String) {
101  if (desiredValue.equals(value)) return true;
102  } else if (value instanceof Double) {
103  try {
104  if (Double.valueOf(desiredValue).equals(value)) return true;
105  } catch (Exception e) {
106 
107  }
108  } else if (value instanceof Integer) {
109  try {
110  if (Integer.valueOf(desiredValue).equals(value)) return true;
111  } catch (Exception e) {
112 
113  }
114  } else if (value instanceof Boolean) {
115  try {
116  if (Boolean.valueOf(desiredValue).equals(value)) return true;
117  } catch (Exception e) {
118 
119  }
120  } else if (value instanceof List) {
121  List list = (List)value;
122  for (Object val : list) {
123  if (valueEquals(desiredValue, val)) return true;
124  }
125  }
126  return false;
127  }
boolean valueEquals(String desiredValue, Object value)
Definition: AbstractClaimMapper.java:99

メンバ詳解

◆ CLAIM

final String org.keycloak.broker.oidc.mappers.AbstractClaimMapper.CLAIM = "claim"
staticinherited

◆ CLAIM_VALUE

final String org.keycloak.broker.oidc.mappers.AbstractClaimMapper.CLAIM_VALUE = "claim.value"
staticinherited

◆ COMPATIBLE_PROVIDERS

final String [] org.keycloak.broker.oidc.mappers.UserAttributeMapper.COMPATIBLE_PROVIDERS = {KeycloakOIDCIdentityProviderFactory.PROVIDER_ID, OIDCIdentityProviderFactory.PROVIDER_ID}
static

◆ configProperties

final List<ProviderConfigProperty> org.keycloak.broker.oidc.mappers.UserAttributeMapper.configProperties = new ArrayList<>()
staticprivate

◆ EMAIL

final String org.keycloak.broker.oidc.mappers.UserAttributeMapper.EMAIL = "email"
static

◆ FIRST_NAME

final String org.keycloak.broker.oidc.mappers.UserAttributeMapper.FIRST_NAME = "firstName"
static

◆ LAST_NAME

final String org.keycloak.broker.oidc.mappers.UserAttributeMapper.LAST_NAME = "lastName"
static

◆ PROVIDER_ID

final String org.keycloak.broker.oidc.mappers.UserAttributeMapper.PROVIDER_ID = "oidc-user-attribute-idp-mapper"
static

◆ USER_ATTRIBUTE

final String org.keycloak.broker.oidc.mappers.UserAttributeMapper.USER_ATTRIBUTE = "user.attribute"
static

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