3

J'utilise ldap java pour accéder au répertoire actif, plus spécifiquement au printemps ldap. une recherche de groupe par objectGUID ne donne pas de résultats lorsque le filtre est codé comme spécifié dans RFC2254.filtre actif avec répertoire objectGUID codé comme spécifié dans RFC2254 ne fonctionne pas

c'est le GUID dans sa représentation hexadécimale:

\49\00\f2\58\1e\93\69\4b\ba\5f\8b\86\54\e9\d8\e9 

ldap élastique code pour le filtre comme cela:

(&(objectClass=group)(objectGUID=\5c49\5c00\5cf2\5c58\5c1e\5c93\5c69\5c4b\5cba\5c5f\5c8b\5c86\5c54\5ce9\5cd8\5ce9)) 

comme mentionné dans rfc2254 et Microsoft technet:

le caractère doit être codé comme la barre oblique inverse '\' (ASCII 0x5c) suivi des deux chiffres hexadécimaux représentant la valeur ASCII du caractère codé. Le cas des deux chiffres hexadécimaux n'est pas significatif. Blockquote

donc une barre oblique inverse doit être « \ 5c »

mais j'obtenir aucun résultat avec filtre au-dessus de la MA. Aussi, si je mets ce filtre dans les filtres personnalisés de la console de gestion AD, cela ne fonctionne pas. lorsque je retire le 5c du filtre, il fonctionne à la fois depuis Java et dans la console AD.

Ai-je raté quelque chose ici?

Bien sûr, je peux encoder le filtre sans le 5c mais je ne suis pas sûr de la bonne façon et je préfère laisser le ressort encoder les filtres car il sait beaucoup de choses que je devrais faire manuellement.

Répondre

0

passer un tableau d'octets et la recherche devrait fonctionner.

1

i trouvé solution avec php pour obtenir l'utilisateur avec objectGUID etap un quand je crée l'utilisateur je mets son objectGuid dans BDD, le objectGuid que vous voyez dans l'ex Ad $ guid_str = « 31207E1C-D81C-4401-8356-33FEF9C8A " après que je crée ma propre fonction pour transformer cet ID objet 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; 

}

cette fonction me renvoie une chaîne comme \ 1C \ 7E \ 20 \ 31 \ 1C \ J8 \ 01 \ 44 \ 83 \ EF \ 9C \ 8A "\ F9 \ ED \ C2 \ 7F après je mets cette chaîne dans mon filtre et je reçois l'utilisateur

#

pour obtenir le format de objectGuid J'utilise cette fonction que je Foud dans 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']); 
} 

je veux dire ce format = 31207E1C-D81C-4401-8356-33FEF9C8A

+1

cela m'a énormément aidé, merci. – Rich701

+0

je suis heureux que cela vous aide :) –

Questions connexes