Problème de serveur CAS

Problème de serveur CAS

par Erwan Gallenne,
Nombre de réponses : 18
Avatar Développeurs de plugins

Bonjour,

 

J'essaye de mettre en place une authentification CAS sachant que je n'ai pas la main sur le serveur CAS, je ne reçois du serveur CAS qu'un identifiant qui n'est pas le login de mon utilisateur de moodle.

Est-ce que l'authentification CAS de Moodle permet ce genre de manipulation ?

Merci d'avance

Moyenne des évaluations  -
En réponse à Erwan Gallenne

Re: Problème de serveur CAS

par Laurent Blanquer,
Salut Erwan, Même problème chez moi depuis que le rectorat de Bordeaux a changé son serveur CAS. La connexion se fait mais le serveur renvoit l'uid de l'utilisateur plutôt que le login, et je reste bloqué sur la page d'authentification de Moodle. Renseignement pris auprès du Catice (service Tice du rectorat de Bordeaux), la version du client CAS utilisé par Moodle est incompatible avec la version CAS du serveur rectoral (et en plus il semble qu'il y a une alerte sécurité sur ce client). Pour le nouvel annuaire qu'utilise le rectorat, l'uid n'est plus le login utilisateur reconnu par Moodle. Avec la dernière version du client phpCAS, le serveur CAS utilise une autre fonction qui retourne les variables que l'on veut, donc en particulier le login. Mais pour que Moodle puisse utiliser les infos retournées, il faut modifier le code. Voilà où j'en suis aujourd'hui, c'est à dire pas très loin et surtout très embêté. Si quelqu'un a + d'infos ou des idées... Laurent
En réponse à Laurent Blanquer

Re: Problème de serveur CAS

par Erwan Gallenne,
Avatar Développeurs de plugins

OK, je ne suis donc pas le seul à avoir ce problème.

Je pense coder un petit hack pour permettre à l'utilisateur d'associer son identifiant CAS à son identifiant Moodle lors de la première connexion et ainsi éviter les soucis.

Ca sera totalement indépendant de l'authentification CAS de Moodle mais ça pourra fonctionner tant qu'on reste sur cette version de Moodle (pour nous jusqu'à la fin d'année scolaire au moins).

En réponse à Erwan Gallenne

Re: Problème de serveur CAS

par Laurent Blanquer,

J'ajoute cependant que nous avons fonctionné avec CAS l'année dernière sans aucun problème. C'est juste depuis la migration vers le nouveau serveur CAS de la DI du rectorat de Bordeaux que nous rencontrons les difficultés évoquées dans mon précédent post. Version plus récente du CAS?

En tous les cas (sans jeu de mots lourdingue), si tu trouves une solution, ce serait chouette si tu pouvais nous dire comment tu as procédé.

 

@+

 

Laurent

En réponse à Laurent Blanquer

Re: Problème de serveur CAS

par Patrick Pollet,

Bonjour,

 

Depuis Avril 2010, Moodle utilise les dernieres versions du client CAS (1.1.2). Voir http://tracker.moodle.org/browse/MDL-20029

Ca vaudrait surement le coup d'installer en test un Moodle récent (1.9.9 weekly)  et voir si il se comporte mieux avec votre version récente du serveur CAS.

A+

Moyenne des évaluations Utile (2)
En réponse à Patrick Pollet

Re: Problème de serveur CAS

par Laurent Blanquer,

Merci pour l'info!

Où trouver la dernière version du client CAS? Y-a-t-il une procédure particulière pour l'installer?

 

Laurent

En réponse à Laurent Blanquer

Re: Problème de serveur CAS

par Patrick Pollet,

 

Renommer le dossier auth/cas/CAS de ton 'vieux Moodle' en CAS.OLD

Copier le dossier auth/cas/CAS d'un Moodle 1.9.9 recent dans auth/cas de ton Moodle et essayer

Si ca tourne mal, renommer CAS en CAS.BUG et CAS.OLD en CAS clin d’œil

 

A+

En réponse à Patrick Pollet

Re: Problème de serveur CAS

par Laurent Blanquer,

Après mise à jour du client CAS, tout rentre dans l'ordre.

Merci beaucoup Patrick pour ton aide.

 

Laurent

En réponse à Patrick Pollet

Re: Problème de serveur CAS

par Erwan Gallenne,
Avatar Développeurs de plugins

Merci Patrick, ça fonctionne en effet

maintenant il me reste à gérer le SSO et ça me semble être compliqué

En réponse à Erwan Gallenne

Re: Problème de serveur CAS

par Patrick Pollet,

Est-tu sur d'avoir correctement réglé la valeur de l'attribut LDAP dans les réglages du plugin CAS (voir copie jointe)

Chez moi c'est uid, mais chez toi ca pourrait être cn (ou autre)...

Annexe screenshot_034.png
En réponse à Patrick Pollet

Re: Problème de serveur CAS

par Laurent Blanquer,

Je reviens sur le problème de SSO. Après mise à jour du client CAS, la connexion au serveur CAS se fait bien, mais la liaison entre les comptes créés dans Moodle et ceux du serveur LDAP ne se fait pas. Après connexion, l'utilisateur accède à son profil pour compléter les différents champs, alors qu'il est déjà créé dans la base Moodle.

La valeur du champ "attribut utilisateur" est bien uid, dans la configuration du serveur CAS sous Moodle.

Par contre, n'est pas renseigné le champ url du serveur LDAP. Jusqu'à présent, nous fonctionnions de cette façon sans avoir de pb, car le serveur CAS utilisait le même login que Moodle. Mais depuis le changement de serveur CAS, le login est l'uid, et la correspondance entre les comptes ne se fait pas.

J'ai essayé de rajouter un champ uid dans le profil utilisateur (administration/Champs du profil/créer un nouveau champ), et de renseigner cette variable dans mon fichier csv pour importer des utilisateurs. Mais à l'importation, j'ai un message d'erreur: "uid n'est pas un nom de champ valide", alors qu'il apparaît bien dans le profil utulisateur.

Des idées?

Laurent

En réponse à Laurent Blanquer

Re: Problème de serveur CAS

par Erwan Gallenne,
Avatar Développeurs de plugins

je cherche moi aussi, je ne suis pas aussi avancé.

je n'ai pas les uid de mes utilisateurs, donc je pensais avoir un formulaire pour permettre à chaque utilisateur de s''authentifier sur moodle lors de sa première connexion à partir du serveur cas.

j'ai déjà codé ces modifications pour d'autres applis web, je crains que le module d'authentification cas de moodle ne nous permette pas de faire ce lien entre l'uid et le compte moodle.

est-ce que quelqu'un a déjà été confronté à ce problème ?

 

erwan

En réponse à Erwan Gallenne

Re: Problème de serveur CAS

par Patrick Pollet,

Bonjour,

 

J'ai un peu de mal à comprendre. Si vos sites utilisent l'authentification CAS ils doivent aussi avoir un serveur LDAP pour que Moodle puisse créer automatiquement les comptes dans sa table mdl_user à la 1ere connexion d'un utilisateur ayant passé la barrière CAS. C'est à partir des infos retournées par ce LDAP que Moodle créera le compte avec les infos nom,prénom,mail et autres extraites du LDAP.  Sans cette information, je ne vois pas comment ca peut marcher.

 

A+

En réponse à Patrick Pollet

Re: Problème de serveur CAS

par Laurent Blanquer,

Les comptes Moodle sont créés par fichier plat. La connexion CAS ne sert qu'à l'authentification et à permettre l'accès à Moodle et aux différents services agrégés à Moodle. Ci-joint la copie d'écran de la conf du serveur CAS sous Moodle de notre plateforme en production, avec l'ancien serveur CAS, où l'identifiant est identique à Moodle. L'adresse du serveur LDAP n'est pas renseignée, car on ne rapatrie aucune données de l'annuaire du rectorat.

Avec la nouvelle version du serveur CAS, où le login sur ce serveur est l'uid et donc différent du login de Moodle, il faudrait qu'à partir de l'uid entré dans la table md_user (comment?), on puisse avoir une correspondance avec un compte Moodle créé par fichier plat.

J'ai demandé aux services du rectorat un accès au serveur LDAP, ce qui serait plus simple, mais je n'ai pas de réponse pour le moment.

Annexe copie décran.jpg
En réponse à Laurent Blanquer

Re: Problème de serveur CAS

par Patrick Pollet,

@laurent

 

A quoi ressemble cet uid renvoyé par le CAS ?

1)est-il de la forme uid=login,dc=zzzzz,dc=fr ou totalement different ?

si oui il suffit de retoucher la fonction get_user() de auth/cas/CAS/CAS/client.php pour en extraire le login Moodle en découpant la chaine ...

2) si non, ton idée de  l'injecter dans un champ de profil était la bonne MAIS , l'entête de la colonne dans le CSV DOIT être profil_field_uid et pas seulement uid. Voir la doc Moodle en anglais http://docs.moodle.org/en/Upload_users (ce détail n'est pas dans la traduction française qui n'est pas à jour ...). Il te faudra alors retoucher la fonction user_login dans auth/cas/auth.php pour aller chercher cet uid dans les champs de profile de l'utilisateur $username  et le comparer à ce qu'a renvoyé phpCAS::getUser()).

 

Dans les deux cas, il va te falloir retoucher le code de Moodle, donc a refaire à chaque changement de version ... pas cool ton rectorat  avec ses limitations d'accès à son LDAP.

 

A+

En réponse à Patrick Pollet

Re: Problème de serveur CAS

par Laurent Blanquer,

Pour le nouveau serveur CAS, la fonction phpCAS::getUser() de la bibliotheque cliente php CAS-1.1.2 renvoie seulement l'uid.

Comment dans ce cas retoucher la fonction user_login? Je ne maîtrise absolument pas php triste

@+

Laurent

En réponse à Laurent Blanquer

Re: Problème de serveur CAS

par Laurent Blanquer,

Enfin sorti de la galère avec l'aide de tous! Un grand merci à ceux qui ont contribué à cette solution. Ce n'est pas la panacée, car il faut modifier le code, mais ça fonctionne et me permet d'utiliser le serveur CAS de notre académie.

Les modifications effectuées dans le fichier auth.php:

- lignes 59 a 65 :

function user_login ($username, $password) {
$this->connectCAS();
//return phpCAS::isAuthenticated() && (trim(moodle_strtolower(phpCAS::getUser())) == $username);

$MesAttributs=phpCAS::getAttributes();
return phpCAS::isAuthenticated() && (trim(moodle_strtolower($MesAttributs['ENTPersonLogin'])) == $username);
}

-lignes 128 a 138 :

if (phpCAS::checkAuthentication()) {
//        $frm->username=phpCAS::getUser();
//        if (phpCAS::getUser()=='esup9992')
//            $frm->username='erhar0062';

$MesAttributs=phpCAS::getAttributes();
$frm->username=$MesAttributs['ENTPersonLogin'];

$frm->password="passwdCas";       
return;
}

Puis dans l'écran de configuration du serveur CAS SSO sous Moodle:

Annexe ecran1.jpg
En réponse à Patrick Pollet

Re: Problème de serveur CAS

par Séverin Terrier,
Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs

D'ailleurs, Moodle 1.9.10 vient de sortir, apportant notamment une mise à jour des bibliothèques phpCAS clin d’œil

Moyenne des évaluations Utile (1)
En réponse à Séverin Terrier

Re: Problème de serveur CAS

par Laurent Blanquer,

Merci pour cette précision, Séverin. Je mets à jour le client phpCAS. Mais il semblerait que cette mise à jour concerne uniquement des problèmes de sécurité, non?

Laurent