【问题标题】:LDAP users and web applicationLDAP 用户和 Web 应用程序
【发布时间】:2015-02-28 04:55:53
【问题描述】:

我们构建了一个 Web 应用程序(在我们的 Intranet 上运行),它依赖于我们的 LDAP 目录(活动目录)供用户使用。我们使用 LDAP 目录,就像我们使用数据库一样,而不是使用我们的应用程序数据库 (MySQL) 中的“用户”表来“同步”目录用户。

在从 MySQL 提取的实体和 LDAP 用户之间创建关系时,我们使用用户 GUID(这是一个唯一的字符串)。

我们的目录永远不会有超过 300 个用户(永远不会)。我们安装了一个专用的 DC(域控制器)来满足我们的应用程序请求。网络延迟不是问题。

在我们的代码中,我们可以替换几行代码来从使用 LDAP 切换到使用 MySQL 和“用户”表(数据映射器很棒)

您会这样做(没有“用户”表同步)吗?你反对这个(做这件事的方式)的论点是什么?

编辑

我们确实使用了“用户”表,但它非常简单,所以 sql 连接并不是真正的问题,我们知道使用 完整 用户表会有更好的性能但正在寻找其他反对使用 LDAP 的论据

CREATE TABLE `user` (
    `_id` int(4) unsigned NOT NULL AUTO_INCREMENT,
    `guid` varchar(255) NOT NULL,
    PRIMARY KEY (`_id`)
);

【问题讨论】:

    标签: php architecture active-directory ldap


    【解决方案1】:

    我不会这样做。除了每次登录时的密码外,我都会同步用户数据。这样,您就可以在其数据库中拥有应用程序的当前数据,并且您可以使用数据库连接功能来获取所有相关信息,而无需查询不同的系统。我只会使用 LDAP 进行身份验证,也许是基于 LDAP 组的授权模型。

    • 这样您就无需为密码和任何密码而烦恼 政策。
    • 登录后,您完全独立于 LDAP 服务器。
    • 缺少 LDAP 服务器不会影响已登录的用户,只会影响新用户 无法登录。

    尽管 objectGUID 是唯一的,但它在整个 LDAP 中是唯一的,不一定是您的应用程序。

    我们经常遇到这样的问题,即在 LDAP 中,当用户名更改(由于结婚或离婚 f.i.)时,我们新创建了一个用户,而不是重命名了该用户。但在这种情况下,您可能不想在您的应用程序中创建新用户。使用您自己的用户表,您可以简单地更改用户的 ObjectGUID,用户应用程序内部 id 保持不变,但链接到 LDAP 中的全新用户。

    【讨论】:

    • 我看到的问题是,如果用户没有登录应用程序,他的个人资料将不会与 LDAP 目录中的内容保持同步(这对我们的电话簿来说是一个小问题,但可以对于人力资源“模块”来说是个大问题),解决方案是每 x 小时/天/.. 同步所有用户帐户,或者查看每个请求的配置文件的年龄,我们试图避免两者
    • 这在很大程度上取决于您的用例。如果您有一个应用程序需要随时更新所有用户的最新信息,那么您将不得不直接使用 LDAP 作为数据库。或者至少根据用户objectGUID 在LDAP 中查询这些信息。每 X 小时更新一次这些信息是没有意义的!但即便如此,我也可能会使用用户表来灵活地更改 LDAP 结构,而无需考虑应用程序。但我认为这是个人喜好,也取决于 LDAP 管理员 ;-)
    • 您使用“小”用户表的方法是我会使用的方法;-) 我可能会在每次登录时同步用户名,但这不是问题!这样,当某些事情发生变化并且您与 LDAP 的耦合不太紧密时,您可以灵活地更改 LDAP 中的用户引用数据集。但是所有相关信息都可以从 LDAP 中使用。
    • 哈哈!那些 LDAP(AD)管理员想在用户离开(退休/等)后删除用户帐户,这对我们来说是一个大问题,这正是我们寻找论据的原因:D,谢谢先生
    • 0) 基于组的 authZ 绝对合适; 1)objectGUID在时间和空间上是唯一的; 2) 如果您仅仅依靠目录来获取 authN、authZ 和配置文件数据,那么在登录过程之后您仍然可以使用该目录; 3) 目录管理员创建新用户而不是正确维护现有用户是一个过程问题;4) 如果域不可用,您仍然无法进行身份验证,并且可能存在更大的问题。我的 2 美分
    【解决方案2】:

    我肯定会为身份验证、基本用户配置文件和用户状态这样做。对我来说,用户的 AD 条目很可能比您为用户拥有的数据更新。它消除了您管理用户密码的需要。您不需要存储它们或提供更改它们的设施。当 Active Directory 中的用户状态被禁用时,您的用户将无法再使用您的应用程序。如果 AD 中用户的姓名、电子邮件、电话号码发生变化,那么您将始终拥有最新数据,而您无需提供管理它的工具。

    objectGUID 是链接您的帐户的完美方式,因为它是唯一且不可变的。

    【讨论】:

      猜你喜欢
      • 2018-10-18
      • 1970-01-01
      • 2013-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多