活动目录Web编程

场景:
我正在使用集成身份validation来授予对ASP.net Intranet站点的访问权限。 当该用户访问该站点时,某些信息将从其活动目录configuration文件加载并提供给他们。 此外,该网站还为其运行的networking应用程序维护该用户的某些信息。

从Active Directory中检索信息的最佳方式是什么(我正在使用LDAP),然后再将活动目录configuration文件链接到Web应用程序configuration文件。 Web应用程序正在使用自己的数据库,因此它不会在Active Directory中存储任何内容。

不build议使用用户名,因为名称更改可以发生,我试图从Active Directory中使用某种forms的唯一标识符。 唯一标识符必须与我的SQL Server 2005数据库兼容。

不要查询LDAP的域名/用户标识和SID。 这些信息已经从AD中提取出来,可以在ASP.NET的安全令牌中find。

使用SID链接到本地​​数据库中的configuration文件。 完成。

以下是您可能认为有用的优秀资源:

目录服务的.NET开发人员指南由Joe Kaplan编程

http://www.amazon.com/dp/0321350170

在活动目录中有一个用于用户对象(所有对象)的属性,名为objectGUID。 您可以从活动目录中查询该文件,并使用用户configuration文件将其存储在数据库中。 对于该活动目录对象来说,它是完全独特的,如果名称改变,它将不会改变。

编辑:

样品:

Private rootDE As New DirectoryEntry("LDAP://<YourDomainHere>") Dim ds As New DirectorySearcher(Me.rootDE) Dim sr As SearchResult ds.Filter = "(samAccountName=<usernameHere>)" sr = ds.FindOne() Dim s As String = Me.GetGUIDString(CType(sr.Properties("objectGUID").Item(0), Byte())) Dim de As New DirectoryEntry("LDAP://<GUID=" & s & ">") MessageBox.Show(de.Name) Private Function GetGUIDString(ByVal guid() As Byte) As String Dim index As Integer Dim result As New System.Text.StringBuilder(String.Empty) For index = 0 To (guid.Length - 1) result.AppendFormat("{0:x2}", guid(index)) Next Return result.ToString() End Function