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

公開メンバ関数

 LDAPGroupMappingsUserDelegate (RealmModel realm, UserModel user, LDAPObject ldapUser)
 
boolean hasRole (RoleModel role)
 
Set< GroupModel > getGroups ()
 
void joinGroup (GroupModel group)
 
void leaveGroup (GroupModel group)
 
boolean isMemberOf (GroupModel group)
 

限定公開メンバ関数

Set< GroupModel > getLDAPGroupMappingsConverted ()
 

非公開変数類

final RealmModel realm
 
final LDAPObject ldapUser
 
Set< GroupModel > cachedLDAPGroupMappings
 

詳解

構築子と解体子

◆ LDAPGroupMappingsUserDelegate()

org.keycloak.storage.ldap.mappers.membership.group.GroupLDAPStorageMapper.LDAPGroupMappingsUserDelegate.LDAPGroupMappingsUserDelegate ( RealmModel  realm,
UserModel  user,
LDAPObject  ldapUser 
)
inline
628  {
629  super(user);
630  this.realm = realm;
631  this.ldapUser = ldapUser;
632  }

関数詳解

◆ getGroups()

Set<GroupModel> org.keycloak.storage.ldap.mappers.membership.group.GroupLDAPStorageMapper.LDAPGroupMappingsUserDelegate.getGroups ( )
inline
640  {
641  Set<GroupModel> ldapGroupMappings = getLDAPGroupMappingsConverted();
642  if (config.getMode() == LDAPGroupMapperMode.LDAP_ONLY) {
643  // Use just group mappings from LDAP
644  return ldapGroupMappings;
645  } else {
646  // Merge mappings from both DB and LDAP
647  Set<GroupModel> modelGroupMappings = super.getGroups();
648  ldapGroupMappings.addAll(modelGroupMappings);
649  return ldapGroupMappings;
650  }
651  }
LDAPGroupMapperMode getMode()
Definition: CommonLDAPGroupMapperConfig.java:79
final GroupMapperConfig config
Definition: GroupLDAPStorageMapper.java:62
Set< GroupModel > getLDAPGroupMappingsConverted()
Definition: GroupLDAPStorageMapper.java:700

◆ getLDAPGroupMappingsConverted()

Set<GroupModel> org.keycloak.storage.ldap.mappers.membership.group.GroupLDAPStorageMapper.LDAPGroupMappingsUserDelegate.getLDAPGroupMappingsConverted ( )
inlineprotected
700  {
701  if (cachedLDAPGroupMappings != null) {
702  return new HashSet<>(cachedLDAPGroupMappings);
703  }
704 
705  List<LDAPObject> ldapGroups = getLDAPGroupMappings(ldapUser);
706 
707  Set<GroupModel> result = new HashSet<>();
708  for (LDAPObject ldapGroup : ldapGroups) {
709  GroupModel kcGroup = findKcGroupOrSyncFromLDAP(realm, ldapGroup, this);
710  if (kcGroup != null) {
711  result.add(kcGroup);
712  }
713  }
714 
715  cachedLDAPGroupMappings = new HashSet<>(result);
716 
717  return result;
718  }
List< LDAPObject > getLDAPGroupMappings(LDAPObject ldapUser)
Definition: GroupLDAPStorageMapper.java:561
GroupModel findKcGroupOrSyncFromLDAP(RealmModel realm, LDAPObject ldapGroup, UserModel user)
Definition: GroupLDAPStorageMapper.java:320

◆ hasRole()

boolean org.keycloak.storage.ldap.mappers.membership.group.GroupLDAPStorageMapper.LDAPGroupMappingsUserDelegate.hasRole ( RoleModel  role)
inline
635  {
636  return super.hasRole(role) || RoleUtils.hasRoleFromGroup(getGroups(), role, true);
637  }

◆ isMemberOf()

boolean org.keycloak.storage.ldap.mappers.membership.group.GroupLDAPStorageMapper.LDAPGroupMappingsUserDelegate.isMemberOf ( GroupModel  group)
inline
695  {
696  Set<GroupModel> ldapGroupMappings = getGroups();
697  return ldapGroupMappings.contains(group);
698  }

◆ joinGroup()

void org.keycloak.storage.ldap.mappers.membership.group.GroupLDAPStorageMapper.LDAPGroupMappingsUserDelegate.joinGroup ( GroupModel  group)
inline
654  {
655  if (config.getMode() == LDAPGroupMapperMode.LDAP_ONLY) {
656  // We need to create new role mappings in LDAP
659  } else {
660  super.joinGroup(group);
661  }
662  }
LDAPGroupMapperMode getMode()
Definition: CommonLDAPGroupMapperConfig.java:79
final GroupMapperConfig config
Definition: GroupLDAPStorageMapper.java:62
void addGroupMappingInLDAP(RealmModel realm, GroupModel kcGroup, LDAPObject ldapUser)
Definition: GroupLDAPStorageMapper.java:521

◆ leaveGroup()

void org.keycloak.storage.ldap.mappers.membership.group.GroupLDAPStorageMapper.LDAPGroupMappingsUserDelegate.leaveGroup ( GroupModel  group)
inline
665  {
666  LDAPQuery ldapQuery = createGroupQuery(true);
667  LDAPQueryConditionsBuilder conditionsBuilder = new LDAPQueryConditionsBuilder();
668  Condition roleNameCondition = conditionsBuilder.equal(config.getGroupNameLdapAttribute(), group.getName());
669 
670  String membershipUserLdapAttrName = getMembershipUserLdapAttribute();
671  String membershipUserAttr = LDAPUtils.getMemberValueOfChildObject(ldapUser, config.getMembershipTypeLdapAttribute(), membershipUserLdapAttrName);
672  Condition membershipCondition = conditionsBuilder.equal(config.getMembershipLdapAttribute(), membershipUserAttr);
673 
674  ldapQuery.addWhereCondition(roleNameCondition).addWhereCondition(membershipCondition);
675  LDAPObject ldapGroup = ldapQuery.getFirstResult();
676 
677  if (ldapGroup == null) {
678  // Group 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.
679  if (config.getMode() == LDAPGroupMapperMode.READ_ONLY) {
680  super.leaveGroup(group);
681  }
682  } else {
683  // Group 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
684  if (config.getMode() == LDAPGroupMapperMode.READ_ONLY) {
685  throw new ModelException("Not possible to delete LDAP group mappings as mapper mode is READ_ONLY");
686  } else {
687  // Delete ldap role mappings
690  }
691  }
692  }
void deleteGroupMappingInLDAP(LDAPObject ldapUser, LDAPObject ldapGroup)
Definition: GroupLDAPStorageMapper.java:556
MembershipType getMembershipTypeLdapAttribute()
Definition: CommonLDAPGroupMapperConfig.java:64
LDAPGroupMapperMode getMode()
Definition: CommonLDAPGroupMapperConfig.java:79
final GroupMapperConfig config
Definition: GroupLDAPStorageMapper.java:62
String getMembershipLdapAttribute()
Definition: CommonLDAPGroupMapperConfig.java:59
String getGroupNameLdapAttribute()
Definition: GroupMapperConfig.java:82
String getMembershipUserLdapAttribute()
Definition: GroupLDAPStorageMapper.java:614
LDAPQuery createGroupQuery(boolean includeMemberAttribute)
Definition: GroupLDAPStorageMapper.java:91

メンバ詳解

◆ cachedLDAPGroupMappings

Set<GroupModel> org.keycloak.storage.ldap.mappers.membership.group.GroupLDAPStorageMapper.LDAPGroupMappingsUserDelegate.cachedLDAPGroupMappings
private

◆ ldapUser

final LDAPObject org.keycloak.storage.ldap.mappers.membership.group.GroupLDAPStorageMapper.LDAPGroupMappingsUserDelegate.ldapUser
private

◆ realm

final RealmModel org.keycloak.storage.ldap.mappers.membership.group.GroupLDAPStorageMapper.LDAPGroupMappingsUserDelegate.realm
private

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