gpt4 book ai didi

java - 用 Java 清理 LDAP 查询

转载 作者:行者123 更新时间:2023-12-01 09:09:00 24 4
gpt4 key购买 nike

有人可以指导我下面的代码吗

public String escapeDN (String name) {
//From RFC 2253 and the / character for JNDI
final char[] META_CHARS = {'+', '"', '<', '>', ';', '/'};
String escapedStr = new String(name);
//Backslash is both a Java and an LDAP escape character, so escape it first
escapedStr = escapedStr.replaceAll("\\\\\\\\","\\\\\\\\");
//Positional characters - see RFC 2253
escapedStr = escapedStr.replaceAll("\^#","\\\\\\\\#");
escapedStr = escapedStr.replaceAll("\^ | $","\\\\\\\\ ");
for (int i=0;i < META_CHARS.length;i++) {
escapedStr = escapedStr.replaceAll("\\\\"+META_CHARS[i],"\\\\\\\\" + META_CHARS[i]);
}
return escapedStr;
}


public String escapeSearchFilter (String filter) {
//From RFC 2254
String escapedStr = new String(filter);
escapedStr = escapedStr.replaceAll("\\\\\\\\","\\\\\\\\5c");
escapedStr = escapedStr.replaceAll("\\\\\*","\\\\\\\\2a");
escapedStr = escapedStr.replaceAll("\\\\(","\\\\\\\\28");
escapedStr = escapedStr.replaceAll("\\\\)","\\\\\\\\29");
escapedStr = escapedStr.replaceAll("\\\\"+Character.toString('\\u0000'), "\\\\\\\\00");
return escapedStr;
}

在上面的代码中,我可以理解 LDAP baseDN 和 searchFilter 值在执行之前已被清理,但我无法理解这些方法为什么以及如何工作......

提前致谢!!!

最佳答案

以通用方式解析 DN 是一项艰巨的任务。我建议您使用特定的 LDAP API,例如 UnboundIDApache LDAP .

如果您想了解一些复杂性,请查看:https://docs.ldap.com/ldap-sdk/docs/javadoc/src-html/com/unboundid/ldap/sdk/DN.html#line.280

-吉姆

关于java - 用 Java 清理 LDAP 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41039653/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com