Keycloak 如何使用 User Federation 中定义的 LDAP 属性?

sut*_*tch 5 ldap keycloak

在从 LDAP 提供程序设置用户联合时,存在三个 LDAP 属性:

  • 用户名 LDAP 属性
  • RDN LDAP 属性
  • UUID LDAP 属性

其中每一个的价值如何影响 Keycloak 或同步过程?

例如,如果目录确保唯一的电子邮件地址,使用邮件作为 UUID LDAP 属性是否有任何负面影响?

我在哪里可以找到每个属性的详细信息——特定于 Keycloak?

Cyr*_*lle 7

在 Keycloak 管理控制台中,您可以将鼠标悬停在工具提示上 - 一个小问号 - 旁边的 LDAP 属性标签,如果您想要尽可能多的信息。我在 Keycloak v6.0.1 上检查过这个,但我认为它适用于最新版本。此类工具提示通常会提供比您在 Keycloak 文档网站上找到的更多信息。有关这些属性的更多详细信息:

  • 用户名 LDAP 属性:映射为 Keycloak 用户名的 LDAP 属性名称。对于许多 LDAP 服务器供应商,它可以是“uid”。对于 Active Directory,它可以是“sAMAccountName”或“cn”。应该为要从 LDAP 导入 Keycloak 的所有 LDAP 用户记录填写该属性。因此,mail如果您希望将其作为 Keycloak 中的用户名,则可以使用该属性。然后用户将使用他们的电子邮件地址登录 Keycloak。如果您启用与 Keycloak 本地数据库的LDAP 同步(打开Import Users),这将被记录为用户名。

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

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

  • UUID LDAP 属性:LDAP 属性的名称,用作 LDAP 中对象的唯一对象标识符 (UUID)。对于许多 LDAP 服务器供应商,它是“entryUUID”,但有些不同。例如,对于 Active Directory,它应该是“objectGUID”。如果您的 LDAP 服务器确实不支持 UUID 的概念,您可以使用任何其他属性,该属性在树中的 LDAP 用户中应该是唯一的。例如“uid”或“entryDN”。任何标准 LDAP v3 目录都应使用entryUUID(OpenLDAP、OpenDJ...)。

关于 LDAP 目录中 UUID 的最佳实践,您可以查看RFC 4530标准。

一般来说,我建议不要使用“邮件”作为 UUID,因为用户的“邮件”可能会改变(请参阅下面的原因),而条目 UUID(无论是否为用户条目)意味着是全局唯一的生成的数字(或至少包含这样的数字),通常在服务器端生成,并为条目一劳永逸地固定。(此外,它不应被重复使用,即使在条目被删除后,因为 UUID 在时间和空间上应该是唯一的。)特别是,它应该独立于任何用户的变量属性,如电子邮件地址。

事实上,用户的电子邮件地址在他/她在组织的一生中可能会因各种原因而改变,仅举几例:

  • 用户——通常是女性——可能会结婚或离婚,因此可能会改变他们的姓氏。
  • 最高管理层决定重新命名公司并因此更改邮件域。
  • 该公司正在与/由另一家公司合并或收购,因此邮件域再次更改。

...