c#app和Active目录之间的同步

时间:2011-01-24 13:04:29

标签: c# sql-server active-directory

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

有可能吗?如果是的话,哪些是我的选择?

提前致谢

3 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

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

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

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