Bonjour,
Dans le but de centraliser un peu l'authentification de nos applicatifs
web, je cherche à mettre en place l'authentification sur base radius. Le
serveur sur lequel je fais mes test est un Debian, qui héberge également
la base radius. J'ai donc Apache 2 et Freeradius d'installés, et j'ai
installé le package libapache2-mod-auth-radius pour faire le lien entre
les deux. Dans ma conf Apache j'ai défini un répertoire comme suit :
<Directory /usr/share/mondossier>
AuthType Basic
AuthName "Authentification requise (RADIUS)."
AuthBasicProvider radius
AuthRadiusActive On
require user cguivy
</Directory>
Jusqu'ici ça marche (quand je tente d'accéder au repertoire en HTTP,
j'ai la popup qui me demande mon login/mot de passe et m'accepte/me
jette en fonction de ce que je lui réponds). Ce que je voudrais
maintenant c'est autoriser uniquement les utilisateurs d'un groupe
radius défini, par exemple le groupe "Network". Mon user "cguivy" est
dans le groupe Network dans la base radius (c'est une base mysql), en
tout cas dans la table radusergroup j'ai bien un enregistrement qui
relie le username "cguivy" au groupname "Network".
Dans la conf de mon répertoire apache j'ai donc changé "require user
cguivy" par "require group Network", mais une fois ceci fait, impossible
de s'authentifier, et dans le log d'erreur d'Apache j'ai :
[Tue Jan 17 17:50:00 2012] [error] [client 1.2.3.4] access to
/mondossier/ failed, reason: require directives present and no
Authoritative handler.
(et cela si je tape le bon mot de passe, si j'en mets un mauvais j'ai un
message d'erreur "password mismatch")
Je ne suis pas sûr d'arriver à interpréter ce message d'erreur, surtout
la fin qui parle d'"Authoritative handler".
Par ailleurs je remarque autre chose, quand je teste mon user avec
l'utilitaire radtest, si je mets le bon mot de passe j'obtiens :
root@serveur:/etc/apache2# radtest cguivy motdepasse 127.0.0.1 1812 secret
Sending Access-Request of id 137 to 127.0.0.1 port 1812
User-Name = "cguivy"
User-Password = "motdepasse"
NAS-IP-Address = 1.2.3.4
NAS-Port = 1812
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=137,
length=51
Cisco-AVPair = "shell:priv-lvl=15"
Service-Type = Administrative-User
A aucun moment il n'est fait mention du groupe Network, je me demande si
freeradius a bien "compris" que je voulais que mon user soit dans ce
groupe. Egalement, quand je regarde dans les logs de freeradius, je vois
que la requête faite par Apache a un "Service-Type" à
"Authenticate-Only" ce qui me fait croire qu'il ne tente pas de vérifier
le groupe par ce biais, juste le mot de passe. Mais là j'avoue que ma
connaissance de radius n'est pas suffisante pour que je sois certain de
mon analyse.
Des idées pour me débloquer ?
S'il faut remplacer libapache2-mod-auth-radius par autre chose c'est
possible, s'il faut passer par autre chose qu'un groupe (par exemple un
av-pair) pour que ça marche c'est possible aussi.
Merci.
Cordialement,
Clément Guivy