ASP.NET MVC: как настроить web.config для аутентификации LDAP?

у меня есть рабочий сервер LDAP с этими параметрами:

OU=users,OU=mydomain,O=this domain
LDAP://myhost:389 

Я успешно открыть с общим клиентом ldap, как Ярек Гавор. доктор ветеринарных LDAP на браузера/клиента со следующими параметрами:

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

Я пытался то же самое с 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="MYDOMAINmyid"
         connectionPassword="mypwd"
         attributeMapUsername="sAMAccountName"
         enableSearchMethods="True" />
  </providers>
</membership>
......

спасибо заранее

3 ответов


мне удалось заставить его работать со следующим web.config настройка.

есть две проблемы/ошибки:

1st) я не указал контейнер, поэтому я последовал подсказкам @Kevin:

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

Я думаю, что это было актуально CN, в то время как O может быть опущен, но я не думаю, что это очень важно...

2nd) я помещаю базу 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 моей компании, я не знаю. Надеюсь, это поможет некоторым из вас...пожалуйста, проголосуйте, если вы найдете это решение полезно, спасибо.

@Kevin: большое спасибо. Вы мне очень помогли!


единственным отсутствующим элементом, по-видимому, является ou по умолчанию. Вы пробовали добавить трейлинг-запись ниже" / CN=пользователи, DC=testdomain1, DC=тест, DC=com" ?


add name="TestDomain1ConnectionString" connectionString="LDAP://testdomain1.test.com/CN=Users,DC=testdomain1,DC=test,DC=com"

Я получил выше от http://msdn.microsoft.com/en-us/library/ff650307.aspx


WebConfig

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

C# код

LoginRslt = adAuth.IsAuthenticated (ConfigurationSettings.AppSettings ["LDAPDomain"].ToString (), _username, _password);