Bonjour à tous.
J'ai un serveur OpenLDAP, que j'ai peuplé avec smbldap-populate, et j'ai créé quelques utilisateurs et quelques groupes. J'utilise phpLDAPadmin pour tester mes requêtes. Tout fonctionne bien via Samba et CIFS sur le réseau.
Maintenant, je souhaiterais exploiter l'association des utilisateurs et des groupes pour filtrer l'accès à certains services comme RADIUS, XMPP, etc. Autrement dit, seuls les utilisateurs appartenant au groupe "RADIUS users" doivent pouvoir se connecter via RADIUS, seuls les utilisateurs appartenant au groupe "XMPP users" doivent pouvoir utiliser XMPP, etc.
Malheureusement, je ne parviens pas à écrire les filtres correspondants.
Mettons que l'utilisateur toto cherche à utiliser les services XMPP. Dans pla, j'essaye la requête suivante:
memberOf=cn=XMPP Users,ou=Groups,<base dn>
mais rien n'est retourné. Dans l'entrée cn=XMPP Users,ou=Groups,, j'ai un champ memberUid qui contient la liste des utilisateurs associés au groupe (uniquement les noms d'utilisateurs, c'est à dire le contenu du champ uid, pas les dn complets). J'ai ajouté l'utilisateur toto au groupe XMPP Users avec la commande suivante:
smbldap-usermod -G "XMPP Users" toto
Questions:
- Est-ce que je peux faire ce que je cherche à faire ?
- Comment y parvenir ?
Merci.
# syntax
Posté par NeoX . Évalué à 2.
il faut generalement definir 2 choses,
1 le search scope pour les groupes :
ou=Groups,<base dn>
2 le groupe que tu cherches.
ta syntaxe finale ressemble alors à un simple
memberOf="XMPP Users"
tu peux aussi tester tes requetes avec ldapsearch pour savoir ce qui existe reellement, et ce qui est reellement retournés en fonction des parametres que tu demandes.
Quelle solution XMPP as-tu retenu ?
[^] # Re: syntax
Posté par Richard Dern . Évalué à 1.
Pour XMPP, j'ai opté pour OpenFire. J'utilise Zimbra pour le serveur mail, freeRADIUS pour le serveur RADIUS, et j'utilise mod-auth-ldap sur Apache pour certains sites. Et pour être exhaustif, à l'heure actuelle pour faire fonctionner tout ça, j'utilise un champ seeAlso sur chaque utilisateur qui pointe vers des "groupes" qui ne sont pas dans ou=Groups mais dans ou=Roles, qui sont de simple rôles organisationnels. C'est moche, je sais, mais c'était en attendant de réussir à répondre à ma question :) Et le but ultime de tout ça, c'est d'avoir une interface web qui permet à un user de se connecter pour modifier ses infos personnelles (principalement le mot de passe - avec synchro des mdp samba NT et LM). Voilà qui complète la description de mon système actuel et de ce que j'aimerais en faire.
Pour ldapsearch, j'ai fais:
[^] # Re: syntax
Posté par NeoX . Évalué à 2.
OK, j'avais monté un OpenFire sur LDAP, faut que je retrouve les options que j'avais mise.
pour le changement de mot de passe, j'utilise Self Service Password (aka SSP)
ca fonctionne avec un openLDAP, avec un AD…
http://ltb-project.org/wiki/documentation/self-service-password
pour ldapsearch ca te renvoie rien car :
tu cherches un group :
ou=Groups,dc=cerbere,dc=athaliasoft,dc=lan
qui est lui meme membre du groupe 'XMPP user'
memberOf="XMPP Users"
mais toi ce que tu voudrais c'est les Users qui sont memberOf
donc un
-b ou=Users,dc=cerbere,dc=athaliasoft,dc=lan memberOf="XMPP Users"
tu peux le verifier en explorant ton LDAP avec l'interface graphique (web)
tu verras que le memberOf est dans les données utilisateurs, pas dans les infos de groupe.
[^] # Re: syntax
Posté par Richard Dern . Évalué à 1.
Merci pour le lien vers SSP, je vais jeter un oeil, ça me semble bien pour ce que je veux faire :)
Pour la recherche:
Pour info, un slapcat sur mon user donne ça:
Et un slapcat sur le groupe:
On voit dans le groupe que l'user est présent, mais pas l'inverse (pas la seule étrangeté d'ailleurs…)
[^] # Re: syntax
Posté par NeoX . Évalué à 2.
ben voila, avec ton slapcat tu as les motifs que tu cheches,
soit un user qui est "seeAlso=cn=xmpp,ou=Roles…."
soit un groupe qui dispose d'un 'memberUid=richard'
[^] # Re: syntax
Posté par Richard Dern . Évalué à 1.
Oui mais seeAlso ce n'est pas la bonne façon de faire. Je devrai pouvoir utiliser l'attribut memberOf, mais cet attribut n'existe pas…
[^] # Re: syntax
Posté par NeoX . Évalué à 1.
ben s'il n'existe pas,tu ne peux pas l'utiliser
tu peux eventuellement l'ajouter, mais ca va pas etre simple à maintenir.
[^] # Re: syntax
Posté par Richard Dern . Évalué à 1.
Je pensais que memberOf était la façon "standard" de chercher l'appartenance d'un utilisateur à un groupe. En tout cas, toutes les recherches que j'ai fais sur le sujet aboutissent à ça.
Je dois avoir un problème dans mon paramétrage ou ma façon de gérer les groupes avec smbldap…
[^] # Re: syntax
Posté par NeoX . Évalué à 2.
memberOf, c'est la facon standard,
sauf que dans ton cas tu as un sambaldap, avec des specificités SAMBA
et peut-etre une petite erreur de parametrage au depart
tu en est encore à la maquette, ou c'est un truc en prod ?
[^] # Re: syntax
Posté par Richard Dern . Évalué à 1.
En maquette perpétuelle :) C'est mon réseau perso.
En effet: c'est exactement ce que je fais avec l'attribut seeAlso et c'est effectivement la merde à gérer, d'où mon besoin de le faire correctement :)
[^] # Re: syntax
Posté par Richard Dern . Évalué à 1.
Après, peut être qu'utiliser samba pour peupler mon LDAP des enregistrements initiaux n'est peut être pas la bonne façon de faire.
Je peux tout à fait tout reprendre depuis le début et virer ma base LDAP actuelle.
[^] # Re: syntax
Posté par NeoX . Évalué à 1.
en fait ca depend si tu as des windows qui ont besoin du LDAP pour connecter les utilisateurs et leur donner accés à des partages samba.
si ce n'est pas le cas, un openldap tout ce qu'il y a de plus standard devrait suffire.
[^] # Re: syntax
Posté par Richard Dern . Évalué à 1.
Oui justement, j'ai des Windows derrière.
Mais ça, l'authentification de clients Windows avec Samba et un backend LDAP, je sais faire maintenant.
[^] # Re: syntax
Posté par NeoX . Évalué à 2.
mais ton samba aura quand meme besoin d'avoir des Attribute specifiques pour samba.
si tu veux etre à jour, y a peut-etre un interet à regarder du coté de samba4,
que tu gereras comme un Active Directory, avec les memes attributs qu'un AD,
saMAccount pour l'utilisateur etc
evidemment faudra reparametrer toutes tes applis pour faire cela
[^] # Re: syntax
Posté par Richard Dern . Évalué à 1.
Je pense que mon problème de memberOf vient de là: je n'ai pas l'objectClass samAccount
[^] # Re: syntax
Posté par Richard Dern . Évalué à 1.
Apparemment, memberOf n'est pas si "standard" que ça.
Je crois que je vais continuer à utiliser seeAlso…
[^] # Re: syntax
Posté par NeoX . Évalué à 1.
en effet, memberOf n'est pas livré en standard
il peut s'ajouter comme un overlay (un calcul à partir des memberUid)
http://stackoverflow.com/questions/15818382/what-type-of-group-to-choose-in-openldap-for-grouping-users
nous indique qu'il faut faire l'overlay suivant pour avoir cet attribut
http://www.openldap.org/doc/admin24/overlays.html#Reverse%20Group%20Membership%20Maintenance
il est aussi preciser que charger les schema NDS/ActiveDirectory ajoute automatiquement cet attribut.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.