我正在为客户端解决基于Linux的硬件防火墙问题。 此硬件防火墙连接到ActiveDirectory进行单一login身份validation。
据我所知,ActiveDirectory只是LDAP的一个变形版本,并使用相同的BindDN语法 – 如果我错了,请纠正我的错误。
客户端已经将其configuration为BindDN – 实际的string由于隐私原因而被replace,但特殊字符和空白仍然存在。 “一些地方\ fubar fubaz”
这似乎不是有效的BindDN语法对我来说,我以前曾与LDAP,但是当我们点击testingbutton来testing这个BindDN,testing成功。 当我只更改BindDN中的一个字符并再次运行testing时,testing失败。
我试图找出问题在这里:
答)我不完全了解BindND和相关语法的细微差别
要么
B)设备未能正确validationinput,并错误地将testing识别为成功
LDAP只是一个协议。 像Greg说的那样,微软在Active Directory中的实现符合定义它的各种RFC。 (给他+1)
Doug的回答是部分正确的,他给出了一个有效Bind DN的例子。 但Active Directory特别允许将绑定DN值作为其他forms发送。 在我看来,最好的forms是UserPrincipalName (UPN) ,除非明确的改变,否则通常采用下面的forms。
这对正常的DN值的好处是用户帐户可以在AD内移动,使用凭证的应用程序不必更新它的configuration。
它也可以是传统的NetBIOSforms,看起来像这样,似乎是你的客户正在使用。
这与UPN值具有相同的优点,但又被认为是遗留的。 NetBIOS名字应该很久以前就死掉了,但这是对另一个线程的咆哮。
对于位于Users容器中的用户,绑定DN将是CN = username,CN = Users,DC = yourdomain,DC = com。
它可能工作,如果你只是把用户名,以及它可能searchsAMAccountname属性,如果它的Active Directory感知。 只是不要在域名前加上用户名。
微软的LDAP实现是兼容的。 任何字符在DN中都是有效的。 如果有特殊字符,则必须逃脱。 除非是前导或尾随,否则空白不需要被转义。 一个字符可以用反斜线或等同的\ nnhex转义。
尊敬的名字
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