LDAP/ActiveDirectory BindDN 语法

LDAP/ActiveDirectory BindDN 语法

我正在为客户排除基于 Linux 的硬件防火墙故障。此硬件防火墙连接到 ActiveDirectory 以进行单点登录身份验证。

据我所知,ActiveDirectory 很大程度上只是 LDAP 的一个变质版本,并且使用相同的 BindDN 语法——如果我错了,请纠正我。

客户端已将其配置为其 BindDN——出于隐私原因,实际字符串已被替换,但特殊字符和空格仍保留。“somerandomplace\fubar fubaz”

在我看来,这似乎不是有效的 BindDN 语法,而且我以前使用过 LDAP,但当我们点击“测试”按钮来测试此 BindDN 时,测试成功。当我仅更改 BindDN 中的一个字符并再次运行测试时,测试失败。

我正在尝试找出这里的问题所在:

A)我不完全理解 BindND 和相关语法的细微差别

或者

B)设备未能正确验证输入并错误地将测试认定为成功

答案1

LDAP 只是一种协议。正如 Greg 所说,Microsoft 在 Active Directory 中对它的实现符合定义它的各种 RFC。(+1)

Doug 的回答部分正确,因为他给出了一个有效绑定 DN 的示例。但 Active Directory 明确允许以其他形式发送绑定 DN 值。我认为最好的形式是,UserPrincipalName (UPN)除非明确更改,否则通常采用以下形式。

与正常 DN 值相比,这样做的好处是,用户帐户可以在 AD 内移动,并且使用凭证的应用程序不必更新其配置。

它也可以是传统的 NetBIOS 形式,看起来像这样,并且似乎是您的客户端正在使用的。

  • <域 NetBIOS 名称>\<sAMAccountName>(例如 CONTOSO\user1)

这具有与 UPN 值相同的好处,但同样被视为遗留问题。NetBIOS 名称早就应该消失了,但那是另一个话题的吐槽。

答案2

对于位于用户容器中的用户,绑定 DN 将是 CN=username,CN=Users,DC=yourdomain,DC=com。

如果您只输入用户名,它可能会起作用,因为如果它支持 Active Directory,它可能会搜索 sAMAccountname 属性。只是不要在用户名前面加上域。

答案3

Microsoft 的 LDAP 实现是兼容的。DN 中的任何字符都是有效的。如果有特殊字符,则必须对其进行转义。空格不需要进行转义,除非它是前导或尾随的。可以使用反斜杠或 \nn 十六进制等效字符对字符进行转义。

专有名称
http://msdn.microsoft.com/en-us/library/windows/desktop/aa366101%28v=vs.85%29.aspx

space or # character at the beginning of a string    0x20
space character at the end of a string    0x20
,    comma    0x2C
+    plus sign    0x2B
"    double quote    0x22
\    backslash    0x5C
<    left angle bracket    0x3C
>    right angle bracket    0x3E
;    semicolon    0x3B
LF   line feed    0x0A
CR   carriage return    0x0D
=    equals sign    0x3D
/    forwards slash    0x2F 

相关内容