使用ldap凭证并在postgresql表中搜索

时间:2018-12-16 22:43:47

标签: java spring postgresql ldap

我是 LDAP 的初学者,我想在将来的 PostgreSQL数据库项目中使用它。

假设我将使用LDAP服务器进行身份验证,因此不会在PostgreSQL数据库中插入用户表,在PostgreSQL数据库中,我将具有其他必须与用户身份相关的表( (从LDAP中检索),因此我必须在每个名为 uid 的表中添加一列,用于存储用户的uid值。我的想法正确吗?

1 个答案:

答案 0 :(得分:1)

您所描述的完全正确。请注意,用作唯一标识符的属性取决于所使用的LDAP目录。

我真的只知道Active Directory,它根本不使用uid属性。 AD具有一些强制执行为唯一的属性:

  • distinguishedName:描述对象在目录中的位置。看起来像:CN=Gabriel Luci,OU=Users,DC=domain,DC=com。通常,这在LDAP中很常见,但在其他LDAP目录中可能被称为其他名称。
  • sAMAccountName:通常称为“用户名”。它在域上必须是唯一的,但是可以更改。
  • userPrincipalName:使用格式username@domain.com。此名称在AD林中必须是唯一的,但可以更改(“林”是指同一组织中有多个AD域)。
  • objectSid :(通常称为SID)。它存储为字节数组,但可以转换为类似于S-1-5-32-##########-###########-##########-#####的字符串。这是Windows在安全性权限中用来向帐户授予文件等权限的功能。无法更改。
  • objectGuid:创建帐户时自动分配的GUID。这无法更改。

前三个是人类可读的(通常会在其中加上该人的名字)。其他两个不是,但是它们在对象的生命期内也保持不变(如果此人更改了名称,则SID和GUID仍将相同)。

您使用哪种取决于您的要求。 distinguishedName是唯一的,并允许您在需要时直接绑定到对象(而不是必须搜索sAMAccountName才能找到帐户)。但是,如果您希望即使此人的姓名更改也不会改变,则最好使用objectSidobjectGUID