2012-01-29 128 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。);