database - 处理与 LDAP 身份验证的用户关系

标签 database orm ldap

<分区>

我正在设置一个带有 LDAP 身份验证的网络应用程序,但我不太确定如何处理用户数据库关系(例如,由批准者创建、分配给批准者、成员)

到目前为止,我想到了以下选项:

  1. 当用户首次登录时,检查用户中是否存在记录 table 。如果不是,请执行 ldap 查找以检索姓名和电子邮件以及 创建用户记录。添加用户时会发生同样的事情 到列表或选定。 (可能存储最后的 ldap 查找日期和 x 天后刷新登录详细信息)

  2. 仅使用 cn 创建用户记录,并对姓名和电子邮件执行即时查找

  3. 只需存储 cn 而不是 fk,并执行姓名和电子邮件的即时查找。

我倾向于选择选项 1,因为它会使 ORM 的事情变得简单并减少查找的次数。另一方面,它似乎有点过度设计。

对于应避免上述选项的任何替代方案或原因,我们将不胜感激。

最佳答案

这可能取决于您的用例。

  • 您想了解所有用户(甚至是尚未登录的用户)吗?
  • 您需要为它们存储自定义属性吗?
  • 是否需要根据用户属性进行关系查询?

几个比较:

事实上,我见过的大多数应用程序都在使用经过修改的选项 1。这是因为 LDAP 通常只是受支持的身份验证 选项之一,而且在许多情况下,您希望存储额外的数据以用于每个用户并像处理任何其他实体一样处理该条目(谈到关系、成员资格……)。与您的描述的重要区别是:

  • 每次用户登录时刷新用户条目。

请注意,还有第四种可能性 - 不要直接与 LDAP 集成,让 IdM system为您的应用程序提供用户。但是,这需要在您的目标环境中存在有效的 IdM。

关于database - 处理与 LDAP 身份验证的用户关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17282845/

相关文章:

database - 在第三范式 (3NF) 中可以有复合键吗?

python - 超过 5000 万行数据 - CSV 或 MySQL

SQL 的 "Insert Into"正在工作......但不是

java - 在 Hibernate 中使用不同别名多次连接到同一关联

PHP/Propel删除记录1 :n

grails - Grails 中具有 Spring Security 的无级 LDAP

sql - windowsphone连接远程数据库的方法

java - Hibernate:我们可以在双方都是拥有方的实体之间建立关系吗?

c# - System.DirectoryServices.Protocols Paged get all users 代码突然停止获取超过第一页的用户

docker - 在Windows容器中安装Active Directory或Ldap服务器