3 votes

Apache peut-il exposer le groupe ldap utilisé pour s'authentifier à une application php ?

J'ai une configuration de serveur LAMP utilisant Apache2, mod_php et mod_authnz_ldap pour l'authentification à Active Directory. Ce serveur héberge une application php légère où les utilisateurs entrent et manipulent des données. L'accès est basé sur les directives 'require ldap-group ...', et un certain nombre de groupes sont valides.

Nous devons maintenant ajouter l'accès d'un groupe supplémentaire, mais son accès doit être en "lecture seule". Dans ce cas, nous devons déterminer au niveau de l'application le groupe auquel appartient un utilisateur et désactiver certaines fonctions en fonction de l'appartenance à ce groupe. L'application est en php, donc quelque chose auquel php peut accéder facilement est idéal.

La solution idéale :

Le nom de groupe AD qu'apache a utilisé pour accorder l'accès peut facilement être exposé à l'application, de la même façon que $_SERVER['AUTHENTICATE_SAMACCOUNTNAME'] est.

Des solutions que j'aimerais éviter :

1. Accéder à ldap par un module php

Nous nous authentifions déjà via Apache, ce qui crée une duplication inutile, un travail supplémentaire à mettre en œuvre et des frais de maintenance supplémentaires (une URL de liaison de plus à modifier). C'est faisable, mais c'est pénible.

2. Modifier l'AuthLDAPURL

Encore une fois, il faut s'écarter de nos normes juste pour cet hôte, et maintenir cela à l'avenir. C'est faisable, mais un peu moins douloureux. L'ajout d'autres directives ldap ou les changements de serveur virtuel seraient cependant triviaux à faire.

3. Ajout d'un Vhost dupliqué avec un accès plus limité

Cela semble être la meilleure idée, mais il faudrait publier une nouvelle URL pour le nouveau groupe, ce qui serait une mauvaise expérience pour l'utilisateur et pourrait être rejeté.

4. Authentification basée sur SQL

Il y a tellement de frais généraux supplémentaires que ce n'est absolument pas viable dans ce cas. (Et techniquement, cela ne répondrait pas à la question de toute façon).

2voto

David Blevins Points 10502

Vous devriez pouvoir utiliser SetEnv dans apache : https://httpd.apache.org/docs/2.2/env.html

Ensuite, en PHP, utilisez getenv() ou le tableau $_SERVER[].

http://php.net/manual/en/function.getenv.php

2voto

Nathan Ladwig Points 33

Lorsque j'utilise la ligne suivante avec mod_authz_ldap, elle transmet les variables uid et memberof à PHP :

AuthLDAPURL "ldaps://<server>/cn=users,cn=accounts,dc=ipa,dc=domain,dc=tld?uid,memberof?one?"

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X