ASP.NET MVC:如何为LDAP身份验证设置web.config?

ASP.NET MVC:如何为LDAP身份验证设置web.config?,asp.net,authentication,configuration,active-directory,ldap,Asp.net,Authentication,Configuration,Active Directory,Ldap,我有一个具有以下参数的工作LDAP服务器: OU=users,OU=mydomain,O=this domain LDAP://myhost:389 I使用通用ldap客户端成功地访问,就像good Jarek Gawor的ldap浏览器/客户端一样,具有以下设置: OU=users,OU=mydomain,O=this domain User info (append base DN): uid=myid password=mypwd 我试图用ASP.NET实现同样的功能,但总是出现错误

我有一个具有以下参数的工作LDAP服务器:

OU=users,OU=mydomain,O=this domain
LDAP://myhost:389 
I使用通用ldap客户端成功地访问,就像good Jarek Gawor的ldap浏览器/客户端一样,具有以下设置:

OU=users,OU=mydomain,O=this domain
User info (append base DN):
uid=myid
password=mypwd
我试图用ASP.NET实现同样的功能,但总是出现错误“错误的用户名或密码”。 请帮我用以上参数设置web.config好吗? 我做了很多尝试,比如更改connectionUsername、删除domainname、放置uid=myid等等

web.config

<configuration>
  <connectionStrings>
  <add name="ADConnectionString" connectionString="LDAP://myhost:389"/>
  ....

<membership defaultProvider="DefaultMembershipProvider">
  <providers>
    <add name="DefaultMembershipProvider"
         type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0,Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
         connectionStringName="ADConnectionString"
         connectionProtection="None"
         connectionUsername="MYDOMAIN\myid"
         connectionPassword="mypwd"
         attributeMapUsername="sAMAccountName"
         enableSearchMethods="True" />
  </providers>
</membership>
......

....
......

提前感谢

唯一缺少的项目似乎是默认的ou。您是否尝试过在“/CN=Users,DC=testdomain1,DC=test,DC=com”下面添加尾部条目

添加name=“TestDomain1ConnectionString”connectionString=“LDAP://testdomain1.test.com/CN=Users,DC=testdomain1,DC=test,DC=com”
我从

获得了上述信息,我成功地通过以下web.config设置使其工作

有两个问题/错误:

1)我没有指定容器,所以我遵循@Kevin的提示:

<configuration>
  <connectionStrings>
  <add name="ADConnectionString" connectionString="LDAP://myhost:389/O=this domain,CN=Users,DC=mydomain,DC=com"/>
  ....

....
我认为这与CN有关,而这里可以省略O,但我不认为这很重要

2)我将DN基和用户名(格式为uid=)放在connectionUsername参数中:

<membership defaultProvider="DefaultMembershipProvider">
  <providers>
<add name="DefaultMembershipProvider"
     type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0,Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
     connectionStringName="ADConnectionString"
     connectionProtection="None"
     connectionUsername="uid=myid, O=this domain"
     connectionPassword="mypwd"
     attributeMapUsername="sAMAccountName"
     enableSearchMethods="True" />

请注意,在我的例子中,我需要输入uid=myid。我不知道这是否是一个普遍的解决办法;也许这与我公司的ADAS配置有关,我不知道。我希望这能帮助你们中的一些人…如果你觉得这个解决方案有用,请投赞成票,谢谢

@凯文:非常感谢。你帮了大忙

WebConfig

<add key="LDAPPath" value="LDAP://ip/DC=company,DC=com" />
<add key="LDAPDomain" value="ta" />


C#代码


LoginRslt=adAuth.IsAuthenticated(ConfigurationSettings.AppSettings[“LDAPDomain”].ToString(),\u用户名,\u密码)

mypass
mypwd
或它只是一个打字错误?抱歉@WiktorZychla,这只是一个例子。我将密码标准化为mypwd。谢谢你,凯文。不幸的是,它不起作用。无论如何,对于其他ldap客户端,我只需设置DN base=“OU=users,OU=mydomain,O=this domain”,并将uid=myid&password=mypwd附加到基本DN。。。我做了几次尝试,用myid@mydomain,mydomain\myid,myd,uid=myid,等等…我假设用户名/密码没有任何可能导致此问题的奇怪字符。不确定您对环境的控制程度,但嗅探网络数据包和/或访问AD日志也会很有用。你显然已经试过了其他的一切!谢谢凯文!我成功地让它工作了!刚才我不能把这里作为解决方案,由于我的帐户限制(我有少于100个代表)。我会在接下来的8小时内给出完整答案,thx有两个问题/错误。1)我没有指定容器,所以我遵循Kevin提示:2)我将DN base和用户名放在connectionUsername参数内:。。。connectionUsername=“uid=myid,O=this domain”我不知道这是否是一个通用的解决方案,pheraps与我公司的ADAS配置有关,我不知道@凯文:非常感谢。我相信你一直在帮助我!
<add key="LDAPPath" value="LDAP://ip/DC=company,DC=com" />
<add key="LDAPDomain" value="ta" />