【问题标题】:New employee entry: LDAP and Database Synchronization新员工条目:LDAP 和数据库同步
【发布时间】:2013-12-08 04:36:39
【问题描述】:

在这里,我们正在设计用于存储员工详细信息的低级业务流程。 (另一个团队处理更高级别的设计)。我们目前达成的共识是:

  • 我们将员工的用户名、姓名、电话号码、电子邮件和 [纯文本] 默认密码等存储在 RDBMS(MySQL 或 SQL Server)中。
  • 此 RDBMS(“DB”),即员工信​​息的 ssot,被导出到 LDAP 系统(OpenLDAP 或 Active Directory),该系统又成为主要的身份验证机器。用户的密码仅存储在 LDAP 中。
  • 将构建一个“守护程序”来持续检查两者之间的完整性。例如,它将每下午 2 点检查一次并报告发现的任何异常情况。

第一个问题:上述设计是否反映了最佳实践?

我们目前寻求的是关于新员工数据输入(或编辑现有员工信息)的设计。一个人通过一个界面输入足够的员工信息,当他/她点击“提交”按钮时:

  • 选项 1:调用 Web 服务,该服务将做两件事:更新 DB 条目和更新 LDAP 相应条目。任一过程中的任何错误都将取消整个更新操作。
  • 选项 2:Web 服务将更新 DB 中的条目。然后,这将触发将更新的记录导出到相应 LDAP 条目的过程。
  • 选项 3:Web 服务将更新 DB 中的条目。批处理过程每隔一小时不断检查 DB 和 LDAP 之间的完整性,如果两者之间存在差异,它将以 DB 作为源更新 LDAP。在此选项中,您将收到消息“您的更新信息将在 1 小时内生效。”

第二个问题:最好的选择是什么?我们还应该考虑其他常见的选择吗?最佳(或最常见)的做法是什么?

【问题讨论】:

    标签: database database-design ldap database-connection


    【解决方案1】:

    我会将用户保留在 LDAP 中,因为这是它的设计目的,并且擅长于此。用户可以通过 LDAP 从多个客户端进行身份验证。

    我会使用像 Postgres 这样的数据库,它具有一些 LDAP 集成。

    a) 用户可以使用 LDAP 进行身份验证

    b) 它有一个 LDAP foreign data wrapper,可让您在数据库中查询 LDAP。

    c) 有一个已经构建的 LDAP 到 Postgres 同步工具:

    https://github.com/larskanis/pg-ldap-sync

    【讨论】:

      【解决方案2】:

      永远不要存储纯文本密码!如果您必须在数据库中存储密码,请存储加盐和散列值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-08-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-01
        • 2021-08-30
        • 1970-01-01
        相关资源
        最近更新 更多