将 LDAP 特定属性映射到 Keycloak 角色
Map LDAP specific attribute to Keycloak roles
我在我的 Keycloak 中设置了 LDAP 连接。我已经设法使用映射器将普通的 LDAP 角色导入到 keycloak 中。在我们的 LDAP 中,我们将角色也映射为用户属性,例如 cn、sn、c ...我们有 attributeRoles。当然,从技术角度来看,这些并不是真正的角色,而是用户属性(它们在我们的应用程序中用作角色)。
我想实现的是将这些用户属性角色(attributeRoles)映射到keycloak中的真实角色。
你们中有人遇到过这个具体问题并设法以某种方式解决了吗?
如有任何帮助,我们将不胜感激。
使用以下代码更新 RoleLDAPStorageMapper 中的 onImportUserFromLDAP:
Map<String, Set<String>> attributes = ldapUser.getAttributes();
for (Map.Entry<String, Set<String>> entry : attributes.entrySet()){
if(entry.getKey().equals(<ATTRIBUTE>)){
// Try to import the attribute to Keycloak roles
importAttributesFunction(user, realm, entry.getValue());
}
}
这里有 importAttributesFunction:
public void importAttributesFunction(UserModel user, RealmModel realm, Set<String> sRoles) {
for(String sRole: sRoles){
RoleContainerModel roleContainer = getTargetRoleContainer(realm);
RoleModel role = roleContainer.getRole(sRole);
if (role == null) {
role = roleContainer.addRole(sRole);
}
if(!user.hasRole(role)) {
user.grantRole(role);
}
}
}
希望对您有所帮助。
我在我的 Keycloak 中设置了 LDAP 连接。我已经设法使用映射器将普通的 LDAP 角色导入到 keycloak 中。在我们的 LDAP 中,我们将角色也映射为用户属性,例如 cn、sn、c ...我们有 attributeRoles。当然,从技术角度来看,这些并不是真正的角色,而是用户属性(它们在我们的应用程序中用作角色)。
我想实现的是将这些用户属性角色(attributeRoles)映射到keycloak中的真实角色。
你们中有人遇到过这个具体问题并设法以某种方式解决了吗?
如有任何帮助,我们将不胜感激。
使用以下代码更新 RoleLDAPStorageMapper 中的 onImportUserFromLDAP:
Map<String, Set<String>> attributes = ldapUser.getAttributes();
for (Map.Entry<String, Set<String>> entry : attributes.entrySet()){
if(entry.getKey().equals(<ATTRIBUTE>)){
// Try to import the attribute to Keycloak roles
importAttributesFunction(user, realm, entry.getValue());
}
}
这里有 importAttributesFunction:
public void importAttributesFunction(UserModel user, RealmModel realm, Set<String> sRoles) {
for(String sRole: sRoles){
RoleContainerModel roleContainer = getTargetRoleContainer(realm);
RoleModel role = roleContainer.getRole(sRole);
if (role == null) {
role = roleContainer.addRole(sRole);
}
if(!user.hasRole(role)) {
user.grantRole(role);
}
}
}
希望对您有所帮助。