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

时间:2019-05-24 04:07:38

标签: ldap keycloak

在通过LDAP提供程序设置用户联合身份验证中,存在三个LDAP属性:

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

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

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

在哪里可以找到有关这些特定于Keycloak的属性的详细信息?

1 个答案:

答案 0 :(得分:1)

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

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

  • 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属性。如果您在设置中将Edit Mode选项设置为WRITABLE,则Keycloak会将其同步回LDAP目录,即在LDAP中创建新的用户条目。 为此,(除其他事项外)它需要RDN和Users DN(RDN下面的另一个选项)来制作新用户LDAP条目的完整DN。

    < / li>
  • 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在时间和空间上都应该是唯一的,因此即使删除条目,它也永远不会重复使用。)尤其是,它应该独立于用户的任何 variable 属性,例如电子邮件地址。

实际上,由于各种原因,用户在组织中的一生中的电子邮件地址可能会更改,仅举几例:

  • 用户(通常是女性)可能会结婚或离婚,因此可能会更改其姓氏。
  • 最高管理者决定将公司更名,因此更改邮件域。
  • 该公司正在与另一家公司进行合并或收购,因此邮件域再次更改。

...