Openldap

Fermé
Kris - 27 févr. 2017 à 14:14
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 - 1 mars 2017 à 09:52
Bonjour,

J'aimerai faire un recherche d'un utilisateur qui est dans un groupe et où ce groupe à des roles.

1. Comment affecter des roles à un groupe.
2.Comment afficher via un ldapsearch les roles d'un utilisateurs ?

Exemple:

ou=roles
cn=role1
cn=role2

ou=groups
cn=group1 (affecter à role1)
cn=group2

ou=users
cn=user1 (affecter au groupe 1)
cn=user2

si je chercher cn=user1 j'aimerai avoir cn=role1.

Merci de votre aide
Chris
A voir également:

1 réponse

mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
1 mars 2017 à 09:52
Bonjour,

Je dirais que les deux questions dépendent de la manière dont tu organises ton LDAP.

Sur un LDAP que j'ai récupéré, il y a un typiquement un "dossier" d'utilisateurs (e.g.
ou=users,dc=boite,dc=fr
) et de groupes(e.g.
ou=groups,dc=boite,dc=f
r). Chaque utilisateur correspond à un feuille (e.g.
uid=toto,ou=users,dc=boite,dc=fr
), de même que chaque groupe (e.g.
cn=admins,ou=groups,dc=boite,dc=fr
).

Chaque groupe contient une liste d'uids (attribut
members
). Du coup pour savoir à quels groupe(s) appartient un utilisateur, je dois dans mon cas récupérer les groupes et extraires ceux qui correspondent à l'uid.

Exemple en python3 :

Installation : sous debian :

sudo apt-get update
sudo apt-get install python3 python3-ldap3


Code :

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import sys
from pprint import pprint
from ldap3  import Server, Connection, SUBTREE, ALL

LDAP_UID      = "xxxxx"
LDAP_PASSWORD = "xxxxxxx"
LDAP_USE_SSL  = False
LDAP_HOST     = "ldap.boite.fr"
LDAP_DN_USER  = "ou=users,dc=boite,dc=fr"
LDAP_USER     = "uid=%s,%s" % (LDAP_UID, LDAP_DN_USER)

def test_ldap(ldap_host, ldap_user, ldap_password, ldap_use_ssl):
    ldap_server = Server(
        ldap_host,
        use_ssl = ldap_use_ssl,
        get_info = ALL
    )

    ldap_conn = Connection(
        ldap_server,
        ldap_user,
        ldap_password
    )

    ldap_conn.bind()

    ldap_conn.search(
        "ou=groups,dc=boite,dc=fr",
        "(cn=admins)",
        search_scope = SUBTREE,
        attributes = ["member"]
    )

    ret = ldap_conn.response
    ldap_conn.unbind()
    return ret

if __name__ == '__main__':
    ret = test_ldap(LDAP_HOST, LDAP_USER, LDAP_PASSWORD, LDAP_USE_SSL)
    pprint(ret)

    sys.exit(0)


Bonne chance
0