【问题标题】:Synchronization between c# app and Active directoryc# 应用程序和活动目录之间的同步
【发布时间】:2011-06-14 12:21:37
【问题描述】:

我正在开发一个应用程序来管理有关用户的信息并将数据保存在 SQL Server 中。我想“以某种方式”将此应用程序与我们的 Active Directory 连接起来,因此该应用程序所做的所有更改也将反映在 Active Directory 中(如果我们在应用程序中添加新用户,它也会添加到 Active Directory 中)目录)

有可能吗?如果是这样,我有哪些选择?

提前致谢

【问题讨论】:

    标签: c# sql-server active-directory


    【解决方案1】:

    不要这样做。让 AD 成为您用户群的权威副本,让用户始终先在 AD 中创建,然后传播到 SQL。通过让用户通过不同的路径添加(首先是 SQL),您会在安全性方面打开一大堆蠕虫。如果用户是在 SQL 中定义但在 AD 中没有定义,那么 taht 用户到底是什么?他怎么登录?他属于哪些群体?他是否允许访问该资源或该资源?在AD中添加用户在SQL中添加不同特征的用户然后需要协调的情况如何。

    修改您的应用程序,始终在 AD 中创建用户,以符合 AD 策略和安全要求(密码复杂性是最简单的示例)。然后让AD与SQL同步。

    【讨论】:

    • +1 我亲眼目睹了那罐蠕虫。让 AD 为您的应用程序做最适合您的工作,而不是相反。
    • 我什至还没有提到重命名用户(在 AD 中允许)、拇指砸用户以及所有 AD 同步噩梦之母、SID 更改操作(跨域迁移帐户:msdn.microsoft.com/en-us/library/ms679833%28v=vs.85%29.aspx )。
    • 那么,如何在 AD 中使用我的应用创建用户?并让 D 与 SQL 同步?谢谢
    【解决方案2】:

    我选择解决这个问题的方法是添加一个在我保存用户对象时触发的事件。然后,此事件的侦听器将向 Active Directory 发送更新。就我而言,我正在对 Active Directory 进行单向同步,这也是一种尽力而为的尝试,这意味着如果它失败了,我可以接受。如果您需要围绕它做一些更高的可靠性,您将希望将 SQL 更新包装在事务中,并且仅在更新活动目录后提交。

    如果您需要与 Active Directory 进行双向同步,则需要考虑与 Active Directory 进行某种后台同步,您可以在其中迭代用户并检查 AD 中的更新。

    【讨论】:

      【解决方案3】:

      如果您正在对 AD 进行单向同步,我同意 Aaron 的观点,即您应该在 SQL 服务器中简单地拥有一个触发器。请注意,此解决方案可能会遇到一些问题,例如已创建的用户帐户、用户名或密码不符合 AD 复杂性规则。然后,您需要找到一些方法来记录错误。您可能还需要一个工具来对您的数据库帐户进行初始配置。

      如果你想做双向同步,我建议你阅读DirSync。您可能需要编写一个 NT 服务来完成它。我希望您不要将密码存储在数据库中。我强烈建议您使用 Windows 身份验证。如果您确实需要同步密码,您可能需要编写自己的密码同步并将其安装在您机器中的所有域控制器中。

      如果您正在为企业开发解决方案,您应该查找 Microsoft 现有的元目录解决方案产品,MIISILMFIM

      除了名称不同之外,它们都是一样的。许多企业已采用此作为他们的元目录解决方案。您只需要编写一个扩展来利用其提供的基础设施来进行身份同步。

      【讨论】:

      • 我正在查看有关 FIM 的信息,但我真的不明白如何使用它或实现它。我仍然可以使用基于 Windows 的应用程序作为输入来管理用户和组吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-08
      • 2011-01-12
      • 1970-01-01
      • 2020-12-27
      • 1970-01-01
      • 1970-01-01
      • 2017-12-07
      相关资源
      最近更新 更多