通过SSL查询AD域

时间:2010-10-22 18:04:48

标签: c# .net ssl active-directory ldap

我有域名和端口号(636)以及用户名和密码。

我正在尝试找出一种通过安全LDAP连接到此AD并获取用户'givenname','sn','mail'以及可能的一些自定义属性的方法。

但我不知道如何在C#中执行此操作。

我认为微软可能已经有了这方面的方法,但我会推荐给大家。

最终用户体验将是:查看登录屏幕,输入用户名和密码,这些凭据通过LDAP发送,用户信息返回到我的网络应用程序,然后我将它们登录,如果一切顺利的话......我不知道失败的尝试是什么样的,所以我可以否认它们。有任何想法吗?

请包含代码示例,以便了解实施情况,谢谢!

3 个答案:

答案 0 :(得分:3)

你有没有试过google

修改

对于hubub和snarky的回应感到抱歉。我认为你遇到的问题是你没有正确地提出这个问题 - 无论是在这里还是在谷歌上。无论如何,你不需要在这里舔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>

然后用户可以使用正常的用户名@ domain和密码登录。

答案 1 :(得分:1)

System.DirectoryServices.AccountManagement是用于较新的非LDAP AD身份验证的.NET dll。

尝试使用此网站,以获得代码示例的良好起点:

http://www.codeproject.com/KB/system/usingAccountManagement.aspx

答案 2 :(得分:0)

你绝对应该按照Brad的建议检查.NET 3.5 System.DirectoryServices.AccountManagement命名空间。

要获得如何使用它的良好开端,请阅读此MSDN杂志文章: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");