RFC 2253 - 轻型目录访问协议 (v3)

RFC 2253 - Lightweight Directory Access Protocol (v3)

我正在使用以下内容:https://www.novell.com/documentation/developer/jldap/jldapenu/api/com/novell/ldap/util/DN.html 在我的应用程序中。

为了创建 DN 对象,我需要放入 dnString,它必须遵守 RFC 2253 中描述的语法。

我的 DN 包含:“\”和“,”字符(还有“\,”,两个字符紧接在一起)。

我找不到任何网站准确说明如何获取 RFC 2253 的有效 DN。我发现:

https://ldapwiki.com/wiki/RFC%202253

https://www.rfc-editor.org/rfc/pdfrfc/rfc2253.txt.pdf

两者都提到“,”和“\”是特殊字符,但none说明了如何正确转义它。

如何使用这些值获取有效的 DN?

RFC 2253 第 4 页:

If a character to be escaped is one of the list shown above, then it is prefixed by a backslash (’\’ ASCII 92).

所以转义逗号应该是 \, 转义反斜杠应该是 \.

逗号是 DN 中的分隔符。例如:

cn=admin,ou=marketing,o=corporation

所以只有当作为分隔符时才需要转义,像这样:

cn=Smith\, John,ou=marketing,o=corporation

如果您使用带逗号的 CN 创建对象,Active Directory 会为您转义。

反斜杠是一个特殊字符,因为它用于转义其他字符。因此,如果您 不是 将它用于该目的,则需要使用它自己进行转义:

cn=North\South America,ou=marketing,o=corporation

尽管在那个例子中我会使用正斜杠 ("North/South America"),这又提出了另一点(与您眼前的问题无关,但值得一提):正斜杠不是特殊字符DN,但它们位于 LDAP 路径中。因此,如果您有这样的 DN:

cn=North/South America,ou=marketing,o=corporation

然后,如果您需要在 LDAP 路径中使用它,则不能直接将其放入:

LDAP://cn=North/South America,ou=marketing,o=corporation

因为/是分隔符,所以会认为DN就是cn=North。在这些情况下,您也需要使用反斜杠转义:

LDAP://cn=North\/South America,ou=marketing,o=corporation

但是仅当您在 LDAP 路径中使用它时