Implémentation avec LDAP


#1

Bonjour,

J’ai réussi à installer Axelor via un docker et un LDAP sur OpenLDAP et à configurer la partie LDAP.
La connection se passe bien, mais je ne comprends pas quelle organisation dois je avoir dans mon LDAP.
Quels groupes sont à créer ? Comment être admin de l’application (admin/admin ne marche plus dans ce cas) ?

En gros, quelle est l’organisation type sur OpenLDAP ?

Merci,


#2

Bonjour,

Sur votre LDAP vous devez d’avord créer une OU qui contiendra vos groupes. C’est le FDN de cette OU que vous préciserez dans le paramètre ldap.group.base. Dans cette OU il vous reste à créer des objets groupOfUniqueNames dont le CN devra être identique au nom du groupe dans Axelor. Il s’agit des groupes d’utilisateurs. Ensuite, il vous suffit d’utiliser l’attribut uniqueMember du groupe pour associer vos utilisateurs à ce groupe. Attention: c’est le FDN complet de vos utilisateurs qui doit être précisé dans cette attribut.

Exemple d’objets LDAP

top: dc=home
organizationUnit: ou=people,dc=home
inetOrgPerson: uid=ldapadmin,ou=people,dc=home
organizationUnit: ou=groups,dc=home
groupOfUniqueNames: cn=admins,ou=groups,dc=home [miroir du group admins dans Axelor]
groupOfUniqueNames/admins/uniqueMember: uid=ldapadmin,ou=people,dc=home

Dans le fichier application.properties:

ldap.group.base = ou=groups,dc=home
ldap.group.filter = (uniqueMember=uid={0},ou=people,dc=home)

Je précise qu’il s’agit d’un exemple fonctionnel et que l’organisation de votre LDAP dépend de vos besoins. Peut-import l’imbrication des DC ou des OU, cela fonctionne à partir du moment ou les filtres spécifiés dans la config Axelor sont en accord avec votre arborescence LDAP.

Par ailleurs, si vous créez un utilisateur avec un uid=admin vous n’avez pas besoin de lui assigner un groupe: l’utilisateur [admin] est créé par défaut dans Axelor et son groupe [admins] lui est déjà assigné

Cdlt


#3

Message à l’attention de @admin,

Il serait bien de modifier la documentation sur la partie LDAP car la recherche de groupe via uniqueMember doit obligatoirement être effectuée à partir d’un DN complet:

Remplacer: ldap.group.filter = (uniqueMember=uid={0})
par: ldap.group.filter = (uniqueMember=uid={0},ou=xxx,dc=xxx)

Voir cf RFC RFC2256 (EQUALITY uniqueMemberMatch).

Cdlt


#4

Merci pour ces réponses. Et quels sont les groupes à créer ?
J’ai l’impression que le groupe “admins” est nécessaire, mais y’en a t"il d’autres.
Et si on fait des modifications dans le LDAP comment faut il resynchroniser axelor ?


#5

Pour les groupes, si vous souhaitez créer d’autres utilisateurs “admin” alors il vous faudra au minimum le groupe “admins”. Si ce n’est pas le cas alors c’est à votre convenance de créer d’autres groupes pour gérer des droits d’accès et des menus spécifique pour certains utilisateurs.

  1. Creez un groupe dans Axelor puis associez-le des droits, des rôles, etc…
  2. Créer un groupe dans le LDAP portant le même nom.
  3. Dans le LDAP associer votre utilisateur au groupe LDAP souhaité.

Si vous avez renseigné la propriété ldap.group.object.class alors à la création d’un groupe dans Axelor celui-ci devrait être aussi créé dans votre LDAP.
L’utilisateur LDAP est automatiquement créé dans Axelor à sa première connexion. Si vous changer l’utilisateur de groupe dans le LDAP, celui-ci sera changé automatiquement lors de sa prochaine connexion.

Cdlt


#6

C’est clair.
Par contre j’ai toujours des soucis pour que cela fonctionne bien.
J’ai l’erreur suivante : “ERROR 93 — [nio-8080-exec-6] com.axelor.rpc.ResponseInterceptor : Authorization Error: Vous n’êtes pas autorisé à lire cette ressource.”

J’ai la configuration suivante :

LDAP
utilisation d’openldap

top: dc=company,dc=com
inetOrgPerson:cn=user1,dc=company,dc=com (avec uid à user1.lastname1 )
organizationUnit: ou=groups,dc=company,dc=com
groupOfUniqueNames: cn=admins,ou=groups,dc=company,dc=com
groupOfUniqueNames/admins/uniqueMember: cn=user1,dc=company,dc=com

Dans application.properties :
ldap.group.base = ou=groups,dc=company,dc=com ldap.group.object.class = groupOfUniqueNames ldap.group.filter = (uniqueMember=uid={0},dc=company,dc=com) ldap.user.base = dc=company,dc=com ldap.user.filter = (uid={0})

J’arrive bien à me connecter sous le login user1.lastname1 mais ensuite j’ai l’erreur “Vous n’êtes pas autorisé à lire cette ressource.”


#7

Bon j’ai renommé mes users, en uid=xxxx et cela marche.


#8

Parfait. Merci de marquer votre topic comme résolut :slight_smile:


#9

Et comment fait-on ? Je ne vois aucun bouton pour le faire.

Merci,


#10

vous prenez une des réponses à votre topic considérée comme ayant résolu votre problème puis à droite de “reply” cliquer sur les 3 petits points “show more” vous devez avoir une case à cocher dans la continuité.


closed #11

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.


opened #12