【发布时间】:2015-09-27 08:49:00
【问题描述】:
ejb 服务将 ldap 过滤器作为字符串并从 ActiveDirectory 返回结果。
问题在于,有时属性值包含需要为整个过滤器转义的特殊字符,如下所示:
https://msdn.microsoft.com/en-us/library/aa746475(v=vs.85).aspx
对于此处指定的专有名称属性值:
https://msdn.microsoft.com/en-us/library/aa366101(v=vs.85).aspx
为了实现这一点,服务必须执行以下操作:
- 分析字符串中的 dn 值,如果它们尚未转义,则根据 dn 转义规则将它们分开并转义。
- 在字符串的其余部分搜索属性值中的特殊字符,如果它们尚未转义,则按照通用过滤器转义规则对其进行转义。
- 将结果组合为新的转义过滤器并将其传递。
Java 原生 javax.naming.ldap.Rdn 可以转义 dn 值,但不是幂等的。至于其他任务,到目前为止,我一直无法找到可以让我完成它们的库。
现在我倾向于认为转义 ldap 过滤器的工作应该由服务的用户而不是服务本身来完成,因为服务很难从实际值中分辨出转义.此外,在没有经过良好测试的库的情况下解析复杂的字符串(例如 ldap 过滤器)在我看来很容易出错。
关于如何解决这个问题的任何想法?这个任务可以自动化吗?
【问题讨论】:
-
这真的需要你通过
{0}机制提供参数吗?
标签: java regex parsing active-directory ldap