2012-01-29 14 views
6

Mam pracuje serwer LDAP z tymi parametrami:ASP.NET MVC: Jak skonfigurować web.config do uwierzytelniania LDAP?

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

I powodzeniem dostęp z ogólnej klienta LDAP, jak dobry Jarka Gawor przeglądarką ldap/klienta z następującymi ustawieniami:

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

Próbowałem zrobić to samo z ASP.NET, otrzymując zawsze błąd "zła nazwa użytkownika lub hasło". Czy możesz mi pomóc skonfigurować web.config z powyższymi parametrami? zrobiłem wiele prób, jak zmienia connectionUsername, usunięcie domeny, umieszczenie uid = myid, etc ...

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> 
...... 

góry dziękuję

+0

'mypass' lub' mypwd' lub to tylko literówka? –

+0

Niestety @WiktorZychla, to był tylko przykład. Zestandaryzowałem hasło jako mypwd. THX – Larry

Odpowiedz

2

udało mi się pracować z następującym web.config konfiguracji.

Były dwa problemy/błędy:

1st) I nie określił pojemnik, więc ja poszedłem @ podpowiedzi Kevina:

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

myślę, że było to właściwe, CN, natomiast O może być pominięty tutaj, ale nie sądzę, że to jest bardzo ważne ...

2) Umieszczam nazwę DN i nazwę użytkownika (w formularzu uid =) razem wewnątrz connectionUsername parametr:

<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" /> 

Uwaga, w moim przypadku musiałem umieścić uid = myid. Nie wiem, czy to może być ogólne rozwiązanie; być może jest to związane z konfiguracją ADAS mojej firmy, nie wiem. Mam nadzieję, że to pomoże niektórym z was ... proszę zagłosować, jeśli uzna to rozwiązanie za użyteczne, thx.

@Kevin: Dziękuję bardzo. Byłeś bardzo pomocny!

0

Jedyna pozycja brakuje wydaje być domyślnym ou. Czy próbowałeś dodać dodając końcowy wpis poniżej "/CN = Użytkownicy, DC = testdomain1, DC = test, DC = com"?

 

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

mam wyżej od http://msdn.microsoft.com/en-us/library/ff650307.aspx

+0

Dziękuję @Kevin. Niestety to nie działa. W każdym razie z innymi klientami LDAP ustawiłem DN base = "OU = users, OU = mydomain, O = this domain" i dopisz uid = myid & password = mypwd do base DN ... Zrobiłem kilka prób, zmieniając nazwę użytkownika na myid @ mydomain, mydomain \ myid, myd, uid = myid, etc .... – Larry

+0

Zakładam, że nazwa użytkownika/hasło nie ma żadnych dziwnych znaków, które mogłyby spowodować ten problem. Nie wiesz, ile masz kontroli nad środowiskiem, ale przydałoby się również węszenie pakietów sieciowych i/lub uzyskiwanie dostępu do dzienników AD. Najwyraźniej próbowałeś wszystkiego innego! – bubbly

+0

THX Kevin! Udaje mi się to zrobić! Właśnie teraz nie mogę tu znaleźć rozwiązania, z powodu mojego limitu konta (mam mniej niż 100 przedstawicieli). Udzielę pełnej odpowiedzi w ciągu następnych 8 godzin, thx Wystąpiły dwa problemy/błędy. 1st) I nie określił pojemnik, więc następuje Kevin wskazówki: 2nd) umieścić bazę DN i nazwę użytkownika wraz wewnątrz parametru connectionUsername: ... connectionUsername = "uid = myid, O = tę domenę" Nie wiem, czy to może być ogólne rozwiązanie, Pheraps jest związany z konfiguracją ADAS mojej firmy, nie wiem. @Kevin: Dziękuję bardzo. Byłem pomocny! – Larry

0

webconfig

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

kod C#

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

Powiązane problemy