我有一个域和端口号(636),以及一个用户名和密码。
我正在尝试想办法通过安全的LDAP连接到这个AD,并获得一个用户'givenname','sn','mail',可能还有一些自定义属性。
然而,我不知道如何在C#中做到这一点。
我认为微软可能已经有了解决这个问题的方法,但我将听从你们所有人的意见。
最终的用户体验将是:查看登录屏幕,输入用户名和密码,这些凭据将通过LDAP发送,用户信息将返回到我的web应用程序,然后如果一切顺利,我将他们登录……虽然我也不知道失败的尝试会是什么样子,所以我可以否认它们。有什么想法吗?
请包括代码示例,以便我可以理解实现,谢谢!
发布于 2010-10-23 02:11:16
你有没有试过google
编辑
很抱歉有这么多喧嚣和尖酸刻薄的回应。我认为你遇到的问题是你没有问对问题--无论是在这里还是在google上。无论如何,您在这里不需要少量的C#代码。您只需将您的web应用程序配置为使用AD作为成员提供程序。您需要一个连接字符串才能正确地完成这项任务
<connectionStrings>
<add name="MyAd"
connectionString="LDAP://adserver/OU=Users"
/>
</connectionStrings>和成员资格提供程序:
<membership defaultProvider="AdProvider">
<providers>
<add
name="AdProvider"
type="System.Web.Security.ActiveDirectoryMembershipProvider,
System.Web, Version=2.0.0.0,
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="MyAd"
applicationName="ItRemoteHelpdesk"
enablePasswordReset="false"
/>
</providers>
</membership>然后,用户可以使用其正常的用户名@域和密码登录。
发布于 2010-10-23 02:33:43
System.DirectoryServices.AccountManagement是用于较新的非LDAP身份验证的LDAP。
尝试这个网站作为一个很好的起点,代码示例:
http://www.codeproject.com/KB/system/usingAccountManagement.aspx
发布于 2010-10-23 04:35:11
你一定要检查一下Brad建议的.NET 3.5 System.DirectoryServices.AccountManagement命名空间。
要对如何使用它有一个良好的开端,请阅读MSDN Magazine文章:Managing Directory Security Principals in the .NET Framework 3.5
这篇文章确实多次谈到了如何安全地(使用SSL)连接到您的AD域,以及如何创建用户或检索用户信息。我认为仔细阅读这篇文章并尝试代码示例应该会让你对如何做你想做的事情有一个很好的想法。
更新:很明显,S.DS.AM中的所有这些方法都需要你在AD上通过认证的。新的类还提供了非常简单的用户凭证验证(如我链接的那篇文章所示):
// establish context
PrincipalContext domain = new PrincipalContext(ContextType.Domain);
// determine whether a user can validate to the directory
bool validated = domain.ValidateCredentials("user1", "Password1");https://stackoverflow.com/questions/3999636
复制相似问题