4

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

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

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

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

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

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

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

4

1 回答 1

1

这可能取决于您的用例。

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

只是几个比较:

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

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

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

于 2013-06-25T06:52:25.710 回答