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
___
Liste de diffusion du FRsAG
http://www.frsag.org/