Keycloak 如何使用在用户联合中定义的 LDAP 属性?

7
在配置来自LDAP提供程序的用户联合时,有三个LDAP属性:
  • 用户名LDAP属性
  • RDN LDAP属性
  • UUID LDAP属性
这些属性的值如何影响Keycloak或同步过程?
例如,如果目录确保唯一电子邮件地址,则将mail用作UUID LDAP属性是否存在任何负面影响?
我在哪里可以找到与Keycloak特定的每个属性相关的详细信息?

你看的是哪个版本的Keycloak? - cdan
我正在使用 Keycloak 版本 5.0.0。 - sutch
1个回答

9
在Keycloak管理控制台中,如果您想了解尽可能多的有关LDAP属性的信息,可以将鼠标悬停在其旁边的小问号上 - 工具提示。我在Keycloak v6.0.1上进行了检查,但我认为它适用于大多数最新版本。此类工具提示通常会提供比您可以在Keycloak文档网站上找到的更多信息。有关这些属性的更多详细信息:
  • LDAP用户名属性:将映射为Keycloak用户名的LDAP属性名称。对于许多LDAP服务器供应商,它可以是“uid”。对于Active Directory,它可以是“sAMAccountName”或“cn”。该属性应填写所有您想从LDAP导入到Keycloak的LDAP用户记录。因此,如果您希望在Keycloak中使用此作为用户名,则可以使用mail属性。然后用户将使用其电子邮件地址登录Keycloak。如果您启用LDAP同步到Keycloak本地数据库(打开导入用户),则将在那里记录此用户名。

  • RDN LDAP属性:用作典型用户DN的RDN(顶级属性)的LDAP属性名称。通常与LDAP用户名属性相同,但不是必需的。例如,对于Active Directory,当用户名属性可能是“sAMAccountName”时,通常使用“cn”作为RDN属性。例如,在传统的LDAP目录(非Active Directory)中,用户DN通常为uid=XXX,ou=people,dc=example,dc=com,您可以在那里使用'uid'。

[编辑于2019-05-31]实际上,当您在Keycloak中创建新用户时,RDN属性会被使用。如果您在设置中将编辑模式选项设置为可写,则Keycloak会将其同步回LDAP目录,即在LDAP中创建新的用户条目。为此,它需要(除其他外)RDN和用户DN(另一个在RDN下方的选项),以便生成新用户LDAP条目的完整DN。

  • UUID LDAP属性:用作LDAP对象唯一标识符(UUID)的LDAP属性名称。对于许多LDAP服务器供应商,它是“entryUUID”,但有些不同。例如,对于Active Directory,它应该是“objectGUID”。如果您的LDAP服务器确实不支持UUID的概念,则可以使用任何其他属性,该属性应在树中的LDAP用户中是唯一的。例如,“uid”或“entryDN”。任何标准的LDAP v3目录都应使用entryUUID(OpenLDAP、OpenDJ等)。
关于LDAP目录中UUID的最佳实践,您可以查看RFC 4530标准。
总的来说,我建议不要使用“mail”作为UUID,因为用户的“mail”可能会更改(请参见下面的原因),而条目UUID - 无论它是用户条目还是其他类型的条目 - 应该是一个全局唯一生成的数字(或至少包含这样的数字),通常在服务器端生成,并且对于该条目永久固定。 (此外,即使在删除条目后,也不应再次使用它,因为UUID应在时间和空间上保持唯一性)。 特别地,它应该独立于任何用户的可变属性,例如电子邮件地址。
事实上,用户的电子邮件地址可能因为各种原因在组织生涯中发生更改,仅列举其中一些:
  • 用户 - 通常是女性 - 可能结婚或离婚,因此可能更改其姓氏。
  • 高层管理决定重新品牌公司,因此更改邮件域。
  • 公司正在进行与另一家公司的合并或收购,因此邮件域再次更改。

...


你是说Username LDAP属性成为用户登录Keycloak的用户名,而UUID LDAP属性用作LDAP目录中每个用户记录的主键以更新吗?我仍然不清楚RDN LDAP属性如何被Keycloak使用。 - sutch
好的,我编辑了我的回答以解决这个问题。简而言之,当您在Keycloak中创建新用户时,特别是使用RDN。如果“Edit Mode”设置为“可写”,Keycloak会将其同步回LDAP目录,即在LDAP中创建新用户条目。为此,它至少需要RDN和“Users DN”(RDN下面的另一个选项)才能使新用户LDAP条目的完整DN。参考代码链接(LDAPUtils#addUserToLdap(...)):https://github.com/keycloak/keycloak/blob/master/federation/ldap/src/main/java/org/keycloak/storage/ldap/LDAPUtils.java#L61 - cdan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接