我正在使用以下内容:我的应用程序中的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?
RFC 2253的第4页:
如果要转义的字符是上面显示的列表之一,则在其前面加上反斜杠('\'ASCII 92)。
因此,转义的逗号应为\,
,而转义的反斜杠应为\\
。
逗号是DN中的分隔符。例如:
cn=admin,ou=marketing,o=corporation
因此仅当将它[
cn=Smith\, John,ou=marketing,o=corporation
如果您使用带有逗号的CN创建对象,Active Directory将为您转义。为此目的使用它,则需要使用自身对其进行转义:反斜杠是特殊字符,因为它用于转义其他字符。因此,如果您
not
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路径中使用它时,[。