【问题标题】:ASP.NET MVC: How to setup web.config for LDAP authentication?ASP.NET MVC:如何为 LDAP 身份验证设置 web.config?
【发布时间】:2012-02-21 18:36:51
【问题描述】:

我有一个使用这些参数的 LDAP 服务器:

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

成功使用通用 ldap 客户端访问,例如 Jarek Gawor 的 ldap 浏览器/客户端,具有以下设置:

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

我尝试对 ASP.NET 进行同样的操作,但总是收到错误“用户名或密码错误”。 你能帮我用上面的参数设置web.config吗? 我做了很多尝试,比如更改连接用户名、删除域名、设置 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="MYDOMAIN\myid"
         connectionPassword="mypwd"
         attributeMapUsername="sAMAccountName"
         enableSearchMethods="True" />
  </providers>
</membership>
......

提前致谢

【问题讨论】:

  • mypassmypwd 还是只是一个错字?
  • 对不起@WiktorZychla,这只是一个例子。我将密码标准化为 mypwd。 THX

标签: asp.net authentication configuration active-directory ldap


【解决方案1】:

网络配置

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

【讨论】:

    【解决方案2】:

    我成功地使用了以下 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:非常感谢。你帮了大忙!

    【讨论】:

      【解决方案3】:

      唯一缺少的项目似乎是默认 ou。您是否尝试在 "/CN=Users,DC=testdomain1,DC=test,DC=com" 下方添加尾随条目?

      添加名称="TestDomain1ConnectionString" connectionString="LDAP://testdomain1.test.com/CN=Users,DC=testdomain1,DC=test,DC=com"

      我从http://msdn.microsoft.com/en-us/library/ff650307.aspx得到以上信息

      【讨论】:

      • 谢谢@Kevin。不幸的是,它不起作用。无论如何,对于其他 ldap 客户端,我只是设置 DN base = "OU=users,OU=mydomain,O=this domain" 并将 uid=myid & password=mypwd 附加到基本 DN ...我做了几次尝试,用 myid@ 更改用户名mydomain、mydomain\myid、myd、uid=myid 等......
      • 我假设用户名/密码没有任何可能导致此问题的奇怪字符。不确定您对环境有多少控制,但嗅探网络数据包和/或访问 AD 日志也会很有用。您显然已经尝试了其他所有方法!
      • 感谢凯文!我成功地让它工作了!刚才我不能把这里作为解决方案,因为我的帐户限制(我的代表少于 100 个)。我会在接下来的 8 小时内给出完整的答案,thx 有两个问题/错误。 1st)我没有指定容器,所以我按照 Kevin 的提示: 2nd)我将 DN 基础和用户名放在 connectionUsername 参数中:... connectionUsername="uid=myid, O=this domain" 我不知道这是否可能是一个通用的解决方案,pheraps与我公司的ADAS配置有关,我不知道。 @Kevin:非常感谢。我对你有帮助!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-05
      • 2015-02-03
      • 2015-10-02
      相关资源
      最近更新 更多