0

我在我的应用程序中使用以下内容: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

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

如何获得具有这些值的有效 DN?

4

1 回答 1

1

RFC 2253第 4 页:

如果要转义的字符是上面显示的列表之一,则以反斜杠 ('\' 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

虽然在那个例子中我会使用正斜杠(“北美/南美”),这带来了另一点(与你的直接问题无关,但值得一提):正斜杠不是 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 路径中使用它时。

于 2019-10-31T00:11:35.377 回答