在通过LDAP提供程序设置用户联合身份验证中,存在三个LDAP属性:
每一个的值如何影响Keycloak或同步过程?
例如,如果目录确保唯一的电子邮件地址,那么使用邮件作为UUID LDAP属性是否有负面效果?
在哪里可以找到有关这些特定于Keycloak的属性的详细信息?
答案 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。
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 属性,例如电子邮件地址。
实际上,由于各种原因,用户在组织中的一生中的电子邮件地址可能会更改,仅举几例:
...