【问题标题】:Active Directory authentication with ldap.js使用 ldap.js 进行 Active Directory 身份验证
【发布时间】:2013-09-23 22:44:50
【问题描述】:

我一直在尝试使用 ldap.js 对 Active Directory Windows 2008 服务器进行身份验证。唯一的目标是对服务器进行身份验证,并且我正在使用客户端的东西(不是创建新服务器,这就是 documentation 的全部内容)。我对 LDAP 完全陌生,因此,使用用户名“MYDOMAIN\myuser”进行身份验证在 ldap.js 中不起作用,但在 ldapsearch 中起作用:ldapsearch -H ldap://192.168.1.212:389 -x -D 'MYDOMAIN\myuser' -w pa33w0rd -LLL -b "dc=mydomain" '(sAMAccountName=myuser)' 身份验证成功但随后吐出Referral (10)

在 ldap.js 中使用 client.bind("MYDOMAIN\myuser", 'pa33w0rd', function(err) { ... } ); 尝试以 49 InvalidCredentialsError 80090308: LdapErr: DSID-0C0903A9, comment: AcceptSecurityContext error, ... 失败

尝试将 MYDOMAIN\myuser 重写为专有名称 dn: cn=myuser, dc=mydomain 也会失败,并且在 ldap 搜索中也会出现身份验证错误。将 DOMAIN\USER(域反斜杠用户格式)转换为 DN 的正确方法是什么?

【问题讨论】:

    标签: node.js authentication active-directory ldap


    【解决方案1】:

    来自http://www.rlmueller.net/NameTranslateFAQ.htm

    1. 专有名称 - RFC 1779 中指定的格式。例如 cn=TestUser,ou=Sales,dc=MyDomain,dc=com。
    2. NT 格式 - Windows NT 4.0 中使用的名称格式。例如 MyDomain\TestUser,其中 MyDomain 是域的 NetBIOS 名称,TestUser 是对象的 NT 名称(Windows 2000 之前的名称)。 sAMAccountName 属性的值是对象的 NT 名称。

    因此,NT 格式(域反斜杠用户)登录名MYDOMAIN\myuser 可以映射到cn=myuser,cn=Users,dc=mydomain,dc=comcn=myuser,cn=Users,dc=mydomain,dc=local 或其他一堆。建议你看一下AD服务器的hosts文件或者DNS域名。您还应该更改 -b(base)以包含 dc=com 或 dc=local,或任何修复引用错误的内容。

    【讨论】:

      最近更新 更多