如何在Active Directory筛选器中转义逗号?

Sea*_* W. 3 python ldap active-directory ldap-query python-ldap

我正在使用python-ldap查询Active Directory

我有这个DN

CN=Whalen\, Sean,OU=Users,OU=Users and Groups,DC=example,DC=net
Run Code Online (Sandbox Code Playgroud)

可以很好地用作查询的基础,但是如果我尝试在这样的搜索过滤器中使用它

(&(objectClass=group)(memberof:1.2.840.113556.1.4.1941:=CN=Whalen\, Sean,OU=Users,OU=Users and Groups,DC=example,DC=net))
Run Code Online (Sandbox Code Playgroud)

我得到一个Bad search filter错误。根据我的测试,即使我使用反斜杠(\)进行了转义,CN中的逗号似乎也是罪魁祸首。但是,Microsoft文档中未将逗号作为需要在过滤器中转义的字符列出。

我想念什么?

Eri*_*ult 5

LDAP过滤器规范为以下字符赋予特殊含义,这些字符在搜索过滤器rfc2254)中使用* ( ) \ NUL时应以反斜杠转义,然后是该字符的两个字符ASCII十六进制表示形式:

*   \2A
(   \28
)   \29
\   \5C
Nul \00
Run Code Online (Sandbox Code Playgroud)

这意味着任何用于转义“ 专有名称”特殊字符(包括逗号)的反斜杠都必须\5c在搜索过滤器中以表示:

(&(objectClass=group)(memberof:1.2.840.113556.1.4.1941:=CN=Whalen\5c, Sean,OU=Users,OU=Users and Groups,DC=example,DC=net))
Run Code Online (Sandbox Code Playgroud)

这是dn特殊字符的列表,在搜索过滤器中使用时\或必须将其转义\5C

+-------------------------------+---+
| comma                         | , |
+-------------------------------+---+
| Backslash character           | \ |
+-------------------------------+---+
| Pound sign (hash sign)        | # |
+-------------------------------+---+
| Plus sign                     | + |
+-------------------------------+---+
| Less than symbol              | < |
+-------------------------------+---+
| Greater than symbol           | > |
+-------------------------------+---+
| Semicolon                     | ; |
+-------------------------------+---+
| Double quote (quotation mark) | " |
+-------------------------------+---+
| Equal sign                    | = |
+-------------------------------+---+
| Leading or trailing spaces    |   |
+-------------------------------+---+
Run Code Online (Sandbox Code Playgroud)