keycloak-federation
公開メンバ関数 | 限定公開メンバ関数 | 非公開変数類 | 全メンバ一覧
org.keycloak.storage.ldap.mappers.membership.role.RoleLDAPStorageMapper.LDAPRoleMappingsUserDelegate クラス
org.keycloak.storage.ldap.mappers.membership.role.RoleLDAPStorageMapper.LDAPRoleMappingsUserDelegate の継承関係図
Inheritance graph
org.keycloak.storage.ldap.mappers.membership.role.RoleLDAPStorageMapper.LDAPRoleMappingsUserDelegate 連携図
Collaboration graph

公開メンバ関数

 LDAPRoleMappingsUserDelegate (RealmModel realm, UserModel user, LDAPObject ldapUser)
 
Set< RoleModel > getRealmRoleMappings ()
 
Set< RoleModel > getClientRoleMappings (ClientModel client)
 
boolean hasRole (RoleModel role)
 
void grantRole (RoleModel role)
 
Set< RoleModel > getRoleMappings ()
 
void deleteRoleMapping (RoleModel role)
 

限定公開メンバ関数

Set< RoleModel > getLDAPRoleMappingsConverted ()
 

非公開変数類

final RealmModel realm
 
final LDAPObject ldapUser
 
final RoleContainerModel roleContainer
 
Set< RoleModel > cachedLDAPRoleMappings
 

詳解

構築子と解体子

◆ LDAPRoleMappingsUserDelegate()

org.keycloak.storage.ldap.mappers.membership.role.RoleLDAPStorageMapper.LDAPRoleMappingsUserDelegate.LDAPRoleMappingsUserDelegate ( RealmModel  realm,
UserModel  user,
LDAPObject  ldapUser 
)
inline
320  {
321  super(user);
322  this.realm = realm;
323  this.ldapUser = ldapUser;
325  }
RoleContainerModel getTargetRoleContainer(RealmModel realm)
Definition: RoleLDAPStorageMapper.java:228
final RoleContainerModel roleContainer
Definition: RoleLDAPStorageMapper.java:315

関数詳解

◆ deleteRoleMapping()

void org.keycloak.storage.ldap.mappers.membership.role.RoleLDAPStorageMapper.LDAPRoleMappingsUserDelegate.deleteRoleMapping ( RoleModel  role)
inline
434  {
435  if (role.getContainer().equals(roleContainer)) {
436 
437  LDAPQuery ldapQuery = createRoleQuery(true);
438  LDAPQueryConditionsBuilder conditionsBuilder = new LDAPQueryConditionsBuilder();
439  Condition roleNameCondition = conditionsBuilder.equal(config.getRoleNameLdapAttribute(), role.getName());
440 
441  String membershipUserAttrName = getMembershipUserLdapAttribute();
442  String membershipUserAttr = LDAPUtils.getMemberValueOfChildObject(ldapUser, config.getMembershipTypeLdapAttribute(), membershipUserAttrName);
443 
444  Condition membershipCondition = conditionsBuilder.equal(config.getMembershipLdapAttribute(), membershipUserAttr);
445 
446  ldapQuery.addWhereCondition(roleNameCondition).addWhereCondition(membershipCondition);
447  LDAPObject ldapRole = ldapQuery.getFirstResult();
448 
449  if (ldapRole == null) {
450  // Role mapping doesn't exist in LDAP. For LDAP_ONLY mode, we don't need to do anything. For READ_ONLY, delete it in local DB.
451  if (config.getMode() == LDAPGroupMapperMode.READ_ONLY) {
452  super.deleteRoleMapping(role);
453  }
454  } else {
455  // Role mappings exists in LDAP. For LDAP_ONLY mode, we can just delete it in LDAP. For READ_ONLY we can't delete it -> throw error
456  if (config.getMode() == LDAPGroupMapperMode.READ_ONLY) {
457  throw new ModelException("Not possible to delete LDAP role mappings as mapper mode is READ_ONLY");
458  } else {
459  // Delete ldap role mappings
460  cachedLDAPRoleMappings = null;
462  }
463  }
464  } else {
465  super.deleteRoleMapping(role);
466  }
467  }
LDAPQuery createRoleQuery(boolean includeMemberAttribute)
Definition: RoleLDAPStorageMapper.java:197
MembershipType getMembershipTypeLdapAttribute()
Definition: CommonLDAPGroupMapperConfig.java:64
LDAPGroupMapperMode getMode()
Definition: CommonLDAPGroupMapperConfig.java:79
final RoleContainerModel roleContainer
Definition: RoleLDAPStorageMapper.java:315
void deleteRoleMappingInLDAP(LDAPObject ldapUser, LDAPObject ldapRole)
Definition: RoleLDAPStorageMapper.java:265
String getMembershipLdapAttribute()
Definition: CommonLDAPGroupMapperConfig.java:59
String getMembershipUserLdapAttribute()
Definition: RoleLDAPStorageMapper.java:305
final RoleMapperConfig config
Definition: RoleLDAPStorageMapper.java:59
String getRoleNameLdapAttribute()
Definition: RoleMapperConfig.java:74

◆ getClientRoleMappings()

Set<RoleModel> org.keycloak.storage.ldap.mappers.membership.role.RoleLDAPStorageMapper.LDAPRoleMappingsUserDelegate.getClientRoleMappings ( ClientModel  client)
inline
347  {
348  if (roleContainer.equals(client)) {
349  Set<RoleModel> ldapRoleMappings = getLDAPRoleMappingsConverted();
350 
351  if (config.getMode() == LDAPGroupMapperMode.LDAP_ONLY) {
352  // Use just role mappings from LDAP
353  return ldapRoleMappings;
354  } else {
355  // Merge mappings from both DB and LDAP
356  Set<RoleModel> modelRoleMappings = super.getClientRoleMappings(client);
357  ldapRoleMappings.addAll(modelRoleMappings);
358  return ldapRoleMappings;
359  }
360  } else {
361  return super.getClientRoleMappings(client);
362  }
363  }
LDAPGroupMapperMode getMode()
Definition: CommonLDAPGroupMapperConfig.java:79
final RoleContainerModel roleContainer
Definition: RoleLDAPStorageMapper.java:315
Set< RoleModel > getLDAPRoleMappingsConverted()
Definition: RoleLDAPStorageMapper.java:409
final RoleMapperConfig config
Definition: RoleLDAPStorageMapper.java:59

◆ getLDAPRoleMappingsConverted()

Set<RoleModel> org.keycloak.storage.ldap.mappers.membership.role.RoleLDAPStorageMapper.LDAPRoleMappingsUserDelegate.getLDAPRoleMappingsConverted ( )
inlineprotected
409  {
410  if (cachedLDAPRoleMappings != null) {
411  return new HashSet<>(cachedLDAPRoleMappings);
412  }
413 
414  List<LDAPObject> ldapRoles = getLDAPRoleMappings(ldapUser);
415 
416  Set<RoleModel> roles = new HashSet<>();
417  String roleNameLdapAttr = config.getRoleNameLdapAttribute();
418  for (LDAPObject role : ldapRoles) {
419  String roleName = role.getAttributeAsString(roleNameLdapAttr);
420  RoleModel modelRole = roleContainer.getRole(roleName);
421  if (modelRole == null) {
422  // Add role to local DB
423  modelRole = roleContainer.addRole(roleName);
424  }
425  roles.add(modelRole);
426  }
427 
428  cachedLDAPRoleMappings = new HashSet<>(roles);
429 
430  return roles;
431  }
List< LDAPObject > getLDAPRoleMappings(LDAPObject ldapUser)
Definition: RoleLDAPStorageMapper.java:277
final RoleContainerModel roleContainer
Definition: RoleLDAPStorageMapper.java:315
final RoleMapperConfig config
Definition: RoleLDAPStorageMapper.java:59
String getRoleNameLdapAttribute()
Definition: RoleMapperConfig.java:74

◆ getRealmRoleMappings()

Set<RoleModel> org.keycloak.storage.ldap.mappers.membership.role.RoleLDAPStorageMapper.LDAPRoleMappingsUserDelegate.getRealmRoleMappings ( )
inline
328  {
329  if (roleContainer.equals(realm)) {
330  Set<RoleModel> ldapRoleMappings = getLDAPRoleMappingsConverted();
331 
332  if (config.getMode() == LDAPGroupMapperMode.LDAP_ONLY) {
333  // Use just role mappings from LDAP
334  return ldapRoleMappings;
335  } else {
336  // Merge mappings from both DB and LDAP
337  Set<RoleModel> modelRoleMappings = super.getRealmRoleMappings();
338  ldapRoleMappings.addAll(modelRoleMappings);
339  return ldapRoleMappings;
340  }
341  } else {
342  return super.getRealmRoleMappings();
343  }
344  }
LDAPGroupMapperMode getMode()
Definition: CommonLDAPGroupMapperConfig.java:79
final RoleContainerModel roleContainer
Definition: RoleLDAPStorageMapper.java:315
Set< RoleModel > getLDAPRoleMappingsConverted()
Definition: RoleLDAPStorageMapper.java:409
final RoleMapperConfig config
Definition: RoleLDAPStorageMapper.java:59

◆ getRoleMappings()

Set<RoleModel> org.keycloak.storage.ldap.mappers.membership.role.RoleLDAPStorageMapper.LDAPRoleMappingsUserDelegate.getRoleMappings ( )
inline
390  {
391  Set<RoleModel> modelRoleMappings = super.getRoleMappings();
392 
393  Set<RoleModel> ldapRoleMappings = getLDAPRoleMappingsConverted();
394 
395  if (config.getMode() == LDAPGroupMapperMode.LDAP_ONLY) {
396  // For LDAP-only we want to retrieve role mappings of target container just from LDAP
397  Set<RoleModel> modelRolesCopy = new HashSet<>(modelRoleMappings);
398  for (RoleModel role : modelRolesCopy) {
399  if (role.getContainer().equals(roleContainer)) {
400  modelRoleMappings.remove(role);
401  }
402  }
403  }
404 
405  modelRoleMappings.addAll(ldapRoleMappings);
406  return modelRoleMappings;
407  }
LDAPGroupMapperMode getMode()
Definition: CommonLDAPGroupMapperConfig.java:79
final RoleContainerModel roleContainer
Definition: RoleLDAPStorageMapper.java:315
Set< RoleModel > getLDAPRoleMappingsConverted()
Definition: RoleLDAPStorageMapper.java:409
final RoleMapperConfig config
Definition: RoleLDAPStorageMapper.java:59

◆ grantRole()

void org.keycloak.storage.ldap.mappers.membership.role.RoleLDAPStorageMapper.LDAPRoleMappingsUserDelegate.grantRole ( RoleModel  role)
inline
373  {
374  if (config.getMode() == LDAPGroupMapperMode.LDAP_ONLY) {
375 
376  if (role.getContainer().equals(roleContainer)) {
377 
378  // We need to create new role mappings in LDAP
379  cachedLDAPRoleMappings = null;
380  addRoleMappingInLDAP(role.getName(), ldapUser);
381  } else {
382  super.grantRole(role);
383  }
384  } else {
385  super.grantRole(role);
386  }
387  }
void addRoleMappingInLDAP(String roleName, LDAPObject ldapUser)
Definition: RoleLDAPStorageMapper.java:254
LDAPGroupMapperMode getMode()
Definition: CommonLDAPGroupMapperConfig.java:79
final RoleContainerModel roleContainer
Definition: RoleLDAPStorageMapper.java:315
final RoleMapperConfig config
Definition: RoleLDAPStorageMapper.java:59

◆ hasRole()

boolean org.keycloak.storage.ldap.mappers.membership.role.RoleLDAPStorageMapper.LDAPRoleMappingsUserDelegate.hasRole ( RoleModel  role)
inline
366  {
367  Set<RoleModel> roles = getRoleMappings();
368  return RoleUtils.hasRole(roles, role)
369  || RoleUtils.hasRoleFromGroup(getGroups(), role, true);
370  }

メンバ詳解

◆ cachedLDAPRoleMappings

Set<RoleModel> org.keycloak.storage.ldap.mappers.membership.role.RoleLDAPStorageMapper.LDAPRoleMappingsUserDelegate.cachedLDAPRoleMappings
private

◆ ldapUser

final LDAPObject org.keycloak.storage.ldap.mappers.membership.role.RoleLDAPStorageMapper.LDAPRoleMappingsUserDelegate.ldapUser
private

◆ realm

final RealmModel org.keycloak.storage.ldap.mappers.membership.role.RoleLDAPStorageMapper.LDAPRoleMappingsUserDelegate.realm
private

◆ roleContainer

final RoleContainerModel org.keycloak.storage.ldap.mappers.membership.role.RoleLDAPStorageMapper.LDAPRoleMappingsUserDelegate.roleContainer
private

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