active-directory - utiliza - que es active directory para que sirve y como se configura
filtro de directorio activo con objectGUID codificado como se especifica en rfc2254 no funciona (3)
Estoy usando java ldap para acceder al directorio activo, más específicamente spring ldap. una búsqueda de grupo por objectGUID no produce resultados cuando el filtro está codificado como se especifica en rfc2254.
este es el guid en su representación hexadecimal:
/49/00/f2/58/1e/93/69/4b/ba/5f/8b/86/54/e9/d8/e9
spring ldap codifica el filtro así:
(&(objectClass=group)(objectGUID=/5c49/5c00/5cf2/5c58/5c1e/5c93/5c69/5c4b/5cba/5c5f/5c8b/5c86/5c54/5ce9/5cd8/5ce9))
como se menciona en rfc2254 y en microsoft technet :
el carácter debe codificarse como el carácter ''/' de la barra diagonal inversa (ASCII 0x5c) seguido de los dos dígitos hexadecimales que representan el valor ASCII del carácter codificado. El caso de los dos dígitos hexadecimales no es significativo. Blockquote
entonces una barra inversa debería ser ''/ 5c''
pero no obtengo resultados con el filtro anterior de AD. también si pongo ese filtro en los filtros personalizados de la consola de administración de AD, no funciona. cuando elimino el 5c del filtro funciona tanto desde Java como desde la consola AD.
¿Me estoy perdiendo de algo?
por supuesto, puedo codificar el filtro sin el 5c, pero no estoy seguro de que sea el correcto y prefiero dejar que el resorte codifique los filtros porque sabe muchas cosas que debo hacer manualmente.
Creo que la entrada del blog en: http://www.developerscrappad.com/1109/windows/active-directory/java-ldap-jndi-2-ways-of-decoding-and-using-the-objectguid-from-windows -active-directory / proporciona la información que necesita.
Pasar una matriz de bytes y la búsqueda debería funcionar.
encontré solución con php para obtener usuario con objectGUID etap one cuando creo usuario puse su objectGuid en bdd, el objectGuid que ve en el anuncio ex $ guid_str = "31207E1C-D81C-4401-8356-33FEF9C8A" después de crear mi propia función para transformar este objeto id int hexadécimal
function guidToHex($guid_str){
$str_g= explode(''-'',$guid_str);
$str_g[0] = strrev($str_g[0]);
$str_g[1] = strrev($str_g[1]);
$str_g[2] = strrev($str_g[2]);
$retour = ''//';
$strrev = 0;
foreach($str_g as $str){
for($i=0;$i < strlen($str)+2; $i++){
if($strrev < 3)
$retour .= strrev(substr($str,0,2)).''//' ;
else
$retour .= substr($str,0,2).''//' ;
$str = substr($str,2);
}
if($strrev < 3)
$retour .= strrev($str);
else
$retour .= $str ;
$strrev++;
}
return $retour;
}
esta función me devuelve una cadena como / 1C / 7E / 20 / 31 / 1C / D8 / 01 / 44 / 83 / EF / 9C / 8A "/ F9 / ED / C2 / 7F después de esto puse esta cadena en mi filtro y obtengo el usuario
#para obtener el formato de objectGuid utilizo esta función que lo escuché en internet
function convertBinToMSSQLGuid($binguid)
{
$unpacked = unpack(''Va/v2b/n2c/Nd'', $binguid);
return sprintf(''%08X-%04X-%04X-%04X-%04X%08X'', $unpacked[''a''], $unpacked[''b1''], $unpacked[''b2''], $unpacked[''c1''], $unpacked[''c2''], $unpacked[''d'']);
}
me refiero a este formato = 31207E1C-D81C-4401-8356-33FEF9C8A