【问题标题】:Getting error An invalid dn syntax has been specified with AspNetActiveDirectoryMembershipProvider出现错误 AspNetActiveDirectoryMembershipProvider 指定了无效的 dn 语法
【发布时间】:2013-07-04 12:07:50
【问题描述】:

我的配置如下:

<connectionStrings>
 <add name="ADService" connectionString="LDAP://myserver.com:636/ou=people,dc=mysite,dc=com" />
</connectionStrings>

<membership defaultProvider="AspNetActiveDirectoryMembershipProvider">
  <providers>
    <add name="AspNetActiveDirectoryMembershipProvider" type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
      connectionStringName="ADService"
      attributeMapUsername="uid"
      attributeMapEmail="mail"
      connectionProtection="Secure"
   />

我已经验证了它可以工作的连接字符串并返回带有 uid=xxx 的对象。但是使用 ASP.net 我收到错误

解析器错误消息:指定了无效的 dn 语法。

我的 Ldap 服务器支持匿名绑定。我究竟做错了什么 ?我连接的服务器不是 AD,而是 OpenLDAP 3.0。

【问题讨论】:

  • OpenLDAP 日志应该记录为请求提交的 DN。当服务器拒绝请求时,那个 DN 是什么?
  • 我没有对服务器的管理员访问权限。我只能用于身份验证。
  • 是否可以让 LDAP 管理员检查日志并告诉服务器拒绝请求时的 DN 是什么?

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


【解决方案1】:

您何时收到错误消息?即你的代码的哪一部分?可能会抛出无效的 dn 语法有几个原因:如连接字符串有问题或在检索属性时出现无效字符(如逗号)。

顺便说一句:attributeMapUsername="uid"?你确定吗?为什么不attributeMapUsername="userPrincipalName"?或attributeMapUsername="sAMAccountName"

【讨论】:

  • 登录页面提交时出错。使用 uid 是因为那是用户名的对象
【解决方案2】:

这是一个 LDAP 配置问题。它需要一个我没有做的 SSL 连接。它需要 AuthenticationTypes.SecureSocketsLayer | AuthenticationTypes.FastBind 在连接选项中。

另一方面,这个内置 api 仅适用于 AD,所以我必须自己编写。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多