2012-01-29 32 views
6

Tôi có một máy chủ LDAP làm việc với các thông số:ASP.NET MVC: Cách thiết lập web.config để xác thực LDAP?

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

tôi thành công truy cập với ldap client generic, giống như Jarek tốt Gawor của trình duyệt ldap/khách hàng với các thiết lập sau:

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

Tôi đã cố gắng để cùng với ASP.NET, luôn luôn có lỗi "sai tên người dùng hoặc mật khẩu". Bạn có thể giúp tôi thiết lập web.config với các thông số trên không? tôi đã nhiều cố gắng, như thay đổi connectionUsername, loại bỏ domainname, đặt uid = myid, vv ...

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

Cảm ơn trước

+0

'mypass' hoặc' mypwd' hoặc chỉ là lỗi đánh máy? –

+0

Xin lỗi @WiktorZychla, đó chỉ là một ví dụ. Tôi đã chuẩn hóa mật khẩu là mypwd. THX – Larry

Trả lời

2

tôi đã thành công trong việc có được nó làm việc với các web.config thiết lập sau.

Có hai vấn đề/lỗi:

1) Tôi không nói rõ container, vì vậy tôi tiếp @ gợi ý của Kevin:

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

Tôi nghĩ rằng là có liên quan CN, trong khi O có thể được bỏ qua ở đây, nhưng tôi không nghĩ điều này rất quan trọng ...

2nd) Tôi đặt cơ sở DN và tên người dùng (dưới dạng uid =) cùng nhau bên trong connectionUsername Thông số:

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

Xin lưu ý, trong trường hợp của tôi, tôi cần thiết để đưa uid = myid. Tôi không biết nếu điều này có thể là một giải pháp chung; có lẽ nó liên quan đến cấu hình ADAS của công ty tôi, tôi không biết. Tôi hy vọng điều này có thể giúp một số bạn ... hãy bỏ phiếu nếu bạn thấy giải pháp này hữu ích, thx.

@Kevin: Cảm ơn rất nhiều. Bạn đã được rất hữu ích!

0

Các chỉ mục mất tích dường như là mặc định ou. Bạn đã thử thêm mục nhập bên dưới "/CN = Người dùng, DC = testdomain1, DC = test, DC = com" chưa?

 

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

tôi đã nêu trên từ http://msdn.microsoft.com/en-us/library/ff650307.aspx

+0

Cảm ơn bạn @Kevin. Thật không may nó không hoạt động. Dù sao với các khách hàng ldap khác tôi chỉ đặt DN base = "OU = người dùng, OU = mydomain, O = tên miền này" và nối uid = myid & password = mypwd vào cơ sở DN ... Tôi đã thực hiện một số lần thử, thay đổi tên người dùng bằng myid @ mydomain, mydomain \ myid, myd, uid = myid, v.v. – Larry

+0

Tôi giả sử tên người dùng/mật khẩu không có bất kỳ ký tự lạ nào có thể gây ra sự cố này. Bạn không chắc chắn bao nhiêu kiểm soát bạn có trên envrionment, nhưng sniffing các gói mạng và/hoặc truy cập vào các bản ghi AD cũng sẽ hữu ích. Bạn dường như đã thử mọi thứ khác! – bubbly

+0

THX Kevin! Tôi thành công để làm cho nó hoạt động! Chỉ cần bây giờ tôi không thể đặt ở đây như là giải pháp, do giới hạn tài khoản của tôi (tôi có ít hơn 100 đại diện). Tôi sẽ trả lời đầy đủ trong 8 giờ tới, thx Có hai vấn đề/lỗi. 1st) Tôi đã không chỉ định vùng chứa, vì vậy tôi đã theo dõi Kevin gợi ý: 2nd) Tôi đặt cơ sở DN và tên người dùng bên trong tham số connectionUsername: ... connectionUsername = "uid = myid, O = tên miền này" Tôi không biết nếu điều này có thể là một giải pháp chung, pheraps có liên quan đến cấu hình ADAS của công ty tôi, tôi không biết. @Kevin: Cảm ơn bạn rất nhiều. Tôi đã giúp bạn! – Larry

0

webconfig

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

C# code

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

Các vấn đề liên quan