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

Lar*_*rry 6 asp.net authentication configuration ldap active-directory

我有一个有这些参数的工作LDAP服务器:

OU=users,OU=mydomain,O=this domain
LDAP://myhost:389 
Run Code Online (Sandbox Code Playgroud)

成功访问了一个通用的ldap客户端,就像好的Jarek Gawor的ldap浏览器/客户端一样,具有以下设置:

OU=users,OU=mydomain,O=this domain
User info (append base DN):
uid=myid
password=mypwd
Run Code Online (Sandbox Code Playgroud)

我试图与ASP.NET一样,总是得到错误" 错误的用户名或密码 ".你可以帮我用上面的参数设置web.config吗?我做了很多尝试,比如更改connectionUsername,删除域名,放置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>
......
Run Code Online (Sandbox Code Playgroud)

提前致谢

Lar*_*rry 2

我成功地让它与以下web.config设置一起工作。

有两个问题/错误:

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

<configuration>
  <connectionStrings>
  <add name="ADConnectionString" connectionString="LDAP://myhost:389/O=this domain,CN=Users,DC=mydomain,DC=com"/>
  ....
Run Code Online (Sandbox Code Playgroud)

我认为这与 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" />
Run Code Online (Sandbox Code Playgroud)

请注意,就我而言,我需要输入 uid=myid。我不知道这是否是一个通用的解决方案;也许和我公司的ADAS配置有关,我不知道。我希望这可以帮助你们中的一些人...如果您发现这个解决方案有用,请投票,谢谢。

@凯文:非常感谢。你非常有帮助!