Openldap

Kris -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -
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

1 réponse

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 942
     
    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