我在公司域上有一个SQL支持的项目,用户都是公司Active Directory的成员。
我真的不想创建单独的SQL用户数据库和缓存名称,电子邮件等。
当记录需要绑定到用户而不是创建Active Directory用户的缓存时,我宁愿在我的SQL表行中为有问题的用户存储Active Directory objectSid或objectGuid(这是最好的?)。 / p>
这里最好的方法是什么?我已经编写了一些CLR和一个CLR sproc,我可以生成一个LDAP查询来从ObjectSids中获取特定的活动目录记录,我将其用作指向Active Directory中来自MsSQL数据库的记录的指针。
这真的是最好的方法吗?这是痛苦的,虽然足以满足我的需求,但我认为必须采用不那么繁琐的方法。
答案 0 :(得分:1)
最简单的方法,在我看来最好的方法是创建一个小服务,它将获取您的AD信息并在SQL服务器中填充/更新表。我们有一个每小时左右运行一次的服务,它使表保持最新状态。我们使用ADGuid识别用户,这样对名称,广告登录,电子邮件地址等的任何更改都不会影响数据库。然后,您可以使用参照完整性来确保用户存在于AD中。
我们的应用程序使用ADFS来记录用户,因此我们始终拥有识别用户的指南,并可以从表格中获取所需的任何额外信息。
每次用户执行操作时,您都不想轮询AD,数据库更有效,如果需要,您可以始终以滑动/绝对比例在应用程序中缓存用户信息。