【问题标题】:RFC 2253 - Lightweight Directory Access Protocol (v3)RFC 2253 - 轻量级目录访问协议 (v3)
【发布时间】:2019-10-30 22:34:59
【问题描述】:

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

【问题讨论】:

    标签: active-directory ldap rfc distinguishedname


    【解决方案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 路径中使用它时。

    【讨论】:

    • 所以如果我有CN=Chik\, Chak,它应该是CN=Chik\\\, Chak?
    • 这取决于。如果cn 属性是“Chik, Chak”,那么它应该在DN 中显示为CN=Chik\, Chak。如果这是 Active Directory,那么您只需查看 distinguishedName 属性即可。但是它显示了您应该如何使用它。
    • 我正在使用 Softerra LDAP 浏览器。 distinguishedName 属性为:CN=Chik\, Chak,OU=..,还有更多的 OU 和 DC,没有特殊字符或空格。然而,novell 库仍然抛出 IllegalArgumentException
    • 有点问题。我正在使用以下门户 - github.com/OpenUnison/openunison-k8s-login-activedirectory。当我查看 OpenUnison pod 的日志时,我看到:Exception in thread "Thread-11" java.lang.IllegalArgumentException: at com.novell.ldap.util.DN.<init>(DN.java:440)
    • 这里是 DN.java 的the source code at line 440。虽然我不太明白它在抱怨什么。
    猜你喜欢
    • 2011-07-11
    • 1970-01-01
    • 1970-01-01
    • 2016-02-21
    • 2018-10-17
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多