Comment puis-je trouver tous les rôles d'un utilisateur dans le LDAP à l'aide de la UnboundID SDK LDAP?
Je vais avoir du mal à trouver des rôles à un utilisateur appartient, j'ai essayé le code suivant et il donne beaucoup de attributs, mais ce qui m'intéresse, c'est ce que les rôles de l'utilisateur appartient à une certaine application.
L'utilisateur, je suis à la recherche pour appartient à, les deux groupes suivants (userrole et adminrole). Comment puis-je récupérer cette information?
DN: cn=userrole,ou=rôles,ou=appname,ou=apps,ou=groupes,dc=exemple,dc=pas de
DN: cn=adminrole,ou=rôles,ou=appname,ou=apps,ou=groupes,dc=exemple,dc=pas de
private final String host = "host.example.com";
private final int port = 389;
private final String bindDn = "uid=appname,ou=systems,dc=example,dc=no";
private final String password = "password";
private final String searchDn = "dc=example,dc=no";
public SearchResultEntry getUserDetails(String username) {
try {
final LDAPConnection connection = new LDAPConnection(host, port,
bindDn, password);
SearchResult searchResults;
searchResults = connection.search(searchDn, SearchScope.SUB,
"(uid=" + username + ")", "+");
if (searchResults.getEntryCount() == 1) {
SearchResultEntry entry = searchResults.getSearchEntries().get(
0);
connection.close();
return entry;
} else {
LOGGER.error("NOT FOUND!");
connection.close();
return null;
}
} catch (LDAPException e) {
LOGGER.error("Exception");
return null;
}
}
Êtes-vous d'obtenir une erreur ou pas de résultats? Les autorisations peut-être?
aussi, regardez ici stackoverflow.com/questions/15051830/...
La réponse dépend de façon critique sur si vous êtes en utilisant des rôles, des groupes de groupes, etc.
Elle dépend aussi de quel serveur LDAP à l'aide de, et quels schémas.
aussi, regardez ici stackoverflow.com/questions/15051830/...
La réponse dépend de façon critique sur si vous êtes en utilisant des rôles, des groupes de groupes, etc.
Elle dépend aussi de quel serveur LDAP à l'aide de, et quels schémas.
OriginalL'auteur kajafls | 2013-07-29
Vous devez vous connecter pour publier un commentaire.
Utiliser la fonction suivante.
L'hypothèse que vous travaille avec des CHAISES LDAP (vous utilisez
uid
):Édité
String#equalsIgnoreCase()
. Dans ce cas, un DN règle de correspondance. Par exemple, les deux DNscn=abc, ou=people, dc=example, dc=com
etcn=abc,ou=people,dc=example,dc=com
sont équivalentes (qui ne diffèrent que dans les espaces, ce qui n'est pas significative dans un DN) encoreString#equalsIgnoreCase()
ne serait pas en compte les deux DNs être le même.Merci! J'ai mis à jour la réponse. J'ai regardé que dans le code et de voir que
Dn.equals
faire le travail. - Il Correct?Oui. La version normalisée utilisée dans
equals()
fonctionne aussi.OriginalL'auteur Michael
Le serveur peut supporter soit
memberOf
ouisMemberOf
. Ce sont des attributs (dans la plupart des serveurs de ces attributs sont virtuel, c'est qu'ils n'occupent pas de stockage et sont générées à la demande de clients) dont la présence dans un objet indique le groupe d'appartenance de l'objet. Voici un exemple qui suppose que le serveur prend en charge leisMemberOf
attribut:voir aussi
memberOf
est un attribut virtuel et n'existe pas dans la plupart des client LDAPs. Je vois seulement qu'il est possible d'itérer sur tous les groupes LDAP et de vérifier si le groupemember
attribut (tools.ietf.org/html/rfc4519#section-2.17) contient le DN de l'utilisateur. Il n'est pas très bon du point de vue des performances. Pouvez-vous suggérer une meilleure solution?Si le serveur ne prend pas en charge
memberOf
ouisMemberOf
, je ne peux pas penser à une meilleure alternative, à l'exception de migrer vers un serveur qui prend en charge l'un de ces attributs.OriginalL'auteur Terry Gardner