LdapUtils.javaPaquete: org.projectforge.business.ldap
Clases: LdapUtils
Métodos (17): encodeForLDAP, encodeForLDAP, escapeCommonName, getOu, getOu, buildOu, buildOu, appendOu, getOrganizationalUnit, getOrganizationalUnit, getAttributeValue, getAttributeStringValue, getAttributeIntegerValue, putAttribute, splitMultipleAttribute, getMissedObjectClasses, addEntry
Campos (1): ATTRIBUTE_SEPARATOR_CHAR
Importaciones: 8 paquetes
package org.projectforge.business.ldap;
import org.apache.commons.lang3.StringUtils;
import org.projectforge.common.StringHelper;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
import java.util.ArrayList;
import java.util.List;
/**
* @author Kai Reinhard (k.reinhard@micromata.de)
*/
public class LdapUtils
{
private static final String ATTRIBUTE_SEPARATOR_CHAR = ",";
// https://github.com/ESAPI/esapi-java-legacy/blob/develop/src/main/java/org/owasp/esapi/reference/DefaultEncoder.java
public static String encodeForLDAP(String input) {
return encodeForLDAP(input, true);
}
/**
* '\' -> "\5c", '(' -> "\\28", ')' -> "\\29", '\0' -> "\00"
* Si encodeWildcards == true: '*' -> "\2a"
* @param input
* @param encodeWildcards El valor predeterminado es true
* @return cadena de entrada codificada.
* https://github.com/ESAPI/esapi-java-legacy/blob/develop/src/main/java/org/owasp/esapi/reference/DefaultEncoder.java
*/
public static String encodeForLDAP(String input, boolean encodeWildcards) {
if (input == null) {
return null;
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < input.length(); i++) {
char c = input.charAt(i);
switch (c) {
case '\\':
sb.append("\\5c");
break;
case '*':
if (encodeWildcards) {
sb.append("\\2a");
} else {
sb.append(c);
}
break;
case '(':
sb.append("\\28");
break;
case ')':
sb.append("\\29");
break;
case '\0':
sb.append("\\00");
break;
default:
sb.append(c);
}
}
return sb.toString();
}
/**
* Escapa los siguientes caracteres: , (coma), = (igual), + (más), < (menor que), > (mayor que), # (signo de número), ; (punto y coma), \
* (barra invertida) y " (comillas).
* @param name
* @return null si name es nulo, de lo contrario la cadena name con caracteres especiales escapados.
*/
public static String escapeCommonName(final String name)
{
if (name == null) {
return null;
}
final StringBuilder buf = new StringBuilder(name.length() + 5);
for (int i = 0; i < name.length(); i++) {
final char ch = name.charAt(i);
if (",=+<>#;\\\"".indexOf(ch) >= 0) {
buf.append("\\");
}
buf.append(ch);
}
return buf.toString();
}
public static String getOu(final String... organizationalUnits)
{
if (organizationalUnits == null) {
return "";
}
if (organizationalUnits.length == 1 && organizationalUnits[0] != null && organizationalUnits[0].startsWith("ou=")) {
// organizationalUnit ya está en la forma ou=...,ou=.... No hay nada que hacer.
return organizationalUnits[0];
}
final StringBuilder buf = new StringBuilder();
buildOu(buf, null, organizationalUnits);
return buf.toString();
}
public static String getOu(final String ou, final String[] organizationalUnits)
{
final StringBuilder buf = new StringBuilder();
buildOu(buf, ou, organizationalUnits);
return buf.toString();
}
public static void buildOu(final StringBuilder buf, final String ou, final String[] organizationalUnits)
{
if (ou == null && organizationalUnits == null) {
return;
}
boolean first = true;
if (ou != null) {
first = false;
// ... (truncado, total 312 líneas)
868d6abb7 2025 -> 2026 63081666f Encabezados de archivos fuente: 2024-> 2025. a72903e36 *.java, *.kt: StringBuffer -> StringBuilder. b6092df09 Copyright 2023 -> 2024 ab45d51fa Copyright 2001-2022 -> 2001-2023.