2010-10-22 84 views
1

我有一个域和端口号(636)以及用户名和密码。通过SSL查询AD域

我试图找出一个办法通过安全LDAP连接到该广告并获得了用户的给定名称“,“SN”,“邮件”,而且很可能一些自定义属性。

但是我不知道如何在C#中做到这一点。

我认为微软可能对这个可用的方法已经但是我会推迟到大家。

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

请包括代码示例,以便我能理解实现,谢谢!

+2

很明显,你甚至没有试图寻找这个你自己(我想知道,我为此甚至一个月前建立一个类库)。请询问具体问题的答案,而不是整个解决方案。 – Brad 2010-10-22 18:15:25

+2

谷歌本身的第一个链接应该会给你所有你需要的信息http://www.c-sharpcorner.com/uploadfile/ankithakur/login_using_active_directory04052006061801am/login_using_active_directory.aspx – InSane 2010-10-22 18:16:18

+0

@Shogun,你发现了什么新的链接@ InSane发布? – Brad 2010-10-22 18:26:31

回答

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> 

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

+0

@Shogun,认真!!您只是要求我们为您制作**解决方案**,而不是回答*问题*。如果你想要的只是一个回答的问题,那么是的,这是可能的。 – Brad 2010-10-22 18:14:20

+0

@Brad,我没有,我只是要求提供代码示例以及关于使用什么C#库的信息......并且询问SO的意义在于帮助添加到网站并获得来自用户的建议,例如一些陷阱人们可能会遇到,实时的建议......哇,只是..哇.. – BigOmega 2010-10-22 18:26:37

+0

@Shogun,你的问题只是太宽泛。我写了一个完整的Dll来定制.NET的AD认证。这会适合发布吗?可能不会。 – Brad 2010-10-22 18:29:49

1

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

试试这个网站有一个良好的出发点与代码示例:

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

+0

它必须是安全的LDAP ..所以我猜'非-LDAP“没有使用安全LDAP,对吧? – BigOmega 2010-10-22 18:36:43

+0

@Shogun,你可以在创建Context时使用'ContextOptions'枚举(指向DC的链接)来指定你需要SSL http://msdn.microsoft.com/zh-cn/library/system.directoryservices .accountmanagement.contextoptions.aspx – Brad 2010-10-22 18:41:33

+0

@布拉德,好的谢谢..对不起,因为如此活泼,这是一个漫长的一周.. – BigOmega 2010-10-22 18:49:02

0

你一定要检查出.NET 3.5 System.DirectoryServices.AccountManagement命名空间由布拉德的建议。

为了得到一个好头如何使用它启动,请阅读此MSDN杂志文章:Managing Directory Security Principals in the .NET Framework 3.5

本文并讨论如何安全地(使用SSL)多次连接到你的AD域,以及如何例如创建用户或检索用户信息。我认为仔细阅读该文章并尝试使用代码示例应该能够帮助您了解如何执行所需的操作。

更新:很明显,在S.DS.AM所有这些方法需要你是认证对广告。新课程还为用户凭据的非常简单的验证(如该文章中我挂):

// establish context 
PrincipalContext domain = new PrincipalContext(ContextType.Domain); 

// determine whether a user can validate to the directory 
bool validated = domain.ValidateCredentials("user1", "Password1"); 
+0

我很困惑。我试图让AD用户通过我的网络应用程序以其用户名和密码登录到客户端AD。这看起来像我可以查找任何用户没有密码...我怎么才能认证某人?我如何获得访问权限,一些管理员密码?更多的阅读我必须做...这似乎太......太复杂了! – BigOmega 2010-10-23 02:15:50

+0

@Shogun:当然,如果你已经通过身份验证,你只能看到某人。阅读我链接到的文章!它还向您展示如何轻松验证AD凭据,以及如何登录给定用户。只有**登录**时,他可以做所有其他的东西,当然! – 2010-10-23 06:53:47

+0

哦...客户给了我一个测试用户,但没有管理员帐户或类似的东西,我想我需要回去找一个?或者我可以验证一个普通用户?请澄清,我很困惑这里.. – BigOmega 2010-10-25 12:57:39