2012-01-29 90 views
6

我有這些參數的工作LDAP服務器:ASP.NET MVC:如何爲LDAP身份驗證設置web.config?

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

成功訪問與通用LDAP客戶端,像好亞雷克Gawor的LDAP瀏覽器/客戶端,設置如下:

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

我試圖對ASP.NET一樣,總是出現錯誤「錯誤的用戶名或密碼」。 請問你能幫我設置web.config以上參數嗎? 我做了很多嘗試,如提前改變connectionUsername,刪除域名,把UID =本身份識別碼,等等

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

感謝

+0

'mypass'或'mypwd'或者它只是一個錯字? – 2012-01-29 19:13:16

+0

對不起@WiktorZychla,這只是一個例子。我將密碼標準化爲mypwd。 THX – Larry 2012-01-29 21:24:33

回答

2

我成功地得到它具有以下的web.config設置工作。

有兩個問題/錯誤:

1)我沒有指定的容器,所以我跟着@凱文的提示:

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

我認爲這是相關的CN,而Ø在這裏可以省略,但我不認爲這是非常重要的...

2)我把DN基地和用戶名(形式爲uid =)一起在裏面連接用戶名參數:

<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 =本身份識別碼。我不知道這可能是一個通用的解決方案;也許它與我公司的ADAS配置有關,我不知道。我希望這可以幫助你們中的一些人......如果你覺得這個解決方案有用,thx,請投票。

@Kevin:非常感謝。你一直很有幫助!

0

唯一缺少的項目似乎成爲默認ou。您是否嘗試在「/CN = Users,DC = testdomain1,DC = test,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

+0

謝謝@凱文。不幸的是它不起作用。 無論如何,與其他ldap客戶端我只是設置DN base =「OU =用戶,OU = mydomain,O =此域」並追加uid = myid&密碼= mypwd基地DN ...我做了幾次嘗試,更改用戶名myid @ mydomain,mydomain \ myid,myd,uid = myid等...... – Larry 2012-01-29 21:23:30

+0

我假設用戶名/密碼沒有任何可能導致此問題的奇怪字符。不知道你對環境有多少控制,但是嗅探網絡數據包和/或訪問AD日誌也是有用的。你顯然已經嘗試了其他一切! – bubbly 2012-01-29 23:12:24

+0

THX凱文!我成功地實現了它的工作!剛纔我不能把這裏作爲解決方案,因爲我的賬戶限制(我的代表不足100)。我會在接下來的8個小時內給出完整的答案,thx 有兩個問題/錯誤。 1)我沒有指定的容器,所以我也跟着凱文提示: 2日)我把DN基礎和用戶名一起connectionUsername參數內: ... connectionUsername =「UID =本身份識別碼,O =該域」 我不知道這可能是一個通用的解決方案,pheraps與我公司的ADAS配置有關,我不知道。 @凱文:非常感謝。我你一直很有幫助! – Larry 2012-01-29 23:28:19

0

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。);