Le plugin « cicas » permet d’utiliser un serveur SSO (Single Sign-On), basé sur CAS (Central Authentication Service), pour s’authentifier dans SPIP.
Pourquoi un plugin supplémentaire sur ce sujet ?
Il existe déjà un plugin « Une authentification SSO » qui permet d’utiliser le serveur SSO (Single Sign-On) CAS, pour authentifier les accès à l’espace public de SPIP. Toutefois, il ne correspond pas à certains besoins spécifiques auxquels le présent plugin doit répondre.
Rappel sur le Single Sign-On avec CAS
Une présentation sur le Single Sign-On avec CAS a été rédigée, par les auteurs du client PHP pour CAS (phpCAS), et est consultable à l’adresse suivante :
http://perso.univ-rennes1.fr/pascal.aubry/presentations/cas-jres2003/cas-jres2003-article.php
Les objectifs de ce plugin
L’objectif est d’utiliser le login et le mot de passe stocké dans le serveur d’authentification au lieu de ceux qui sont stockés dans SPIP. Cela évite à l’utilisateur de gérer ses mots de passe dans plusieurs sites (ou applications) et cela lui évite de s’authentifier à nouveau lorsqu’il passe d’un site à un autre.
Les fonctionnalités de ce plugin
On peut paramétrer ce plugin pour offrir une authentification CAS ou bien une authentification hybride (SPIP ou CAS). Dans ce dernier cas, chaque fois qu’il souhaitera s’authentifier, l’utilisateur pourra choisir soit de s’authentifier comme d’habitude avec SPIP, soit de cliquer sur le lien « Utiliser l’authentification centralisée » pour s’authentifier avec CAS.
Par paramétrage on peut choisir de comparer l’identifiant renvoyé par le serveur CAS au contenu du champ de SPIP contenant l’adresse électronique des auteurs, ou bien à celui contenant le login des auteurs.
Si plusieurs auteurs ont, dans SPIP, la même adresse de messagerie, il est nécessaire de savoir lequel retenir. Aussi, parmi les auteurs disposant de la même adresse de messagerie, celui qui a le plus de droits dans SPIP sera retenu. Si deux auteurs ont les mêmes droits, le premier par ordre alphabétique de nom d’auteur dans SPIP, sera retenu. Les auteurs dont le statut est « à la poubelle » ne seront jamais pris en compte.
L’authentification sur le site public redirige ensuite vers la page en cours, idem lors de la déconnexion.
Un paramétrage par fichier est possible. Il est prioritaire sur le paramétrage du plugin dans l’espace privé. Cela facilite le déploiement sur un grand nombre de sites.
Si un site est publié simultanément sur deux réseaux (par exemple intranet et internet) et que l’on veut pouvoir s’authentifier sur le site dans les deux cas, il peut être souhaitable que le serveur CAS soit accessible sur intranet et sur internet. Aussi, il convient de déterminer la provenance de l’auteur (intranet, internet, …) et d’aiguiller automatiquement sur l’adresse corrélative du serveur CAS (intranet, internet, …). Cette possibilité est offerte uniquement via le paramétrage par fichier.
Compatibilité
CICAS version 3.1 est compatible avec SPIP 3.2, 4.0, 4.1, 4.2.
CICAS version 3.1 est compatible avec PHP 7.4, 8.0, 8.1, 8.2.
Il surcharge une seule fonction de SPIP (« logout »).
Installation
Le plugin « cicas » s’installe comme tous les plugins, cf. http://www.spip.net/fr_article3396.html
Il contient le client phpCAS, ce qui évite de devoir installer ce dernier.
Il évite d’installer “composer” (gestionnaire de dépendances et chargeur automatique de classes) et “logger” (alors que ce sont des pré-requis de phpCAS version 1.6.1).
Le client phpCAS nécessite certains prérequis relatifs à PHP.
Paramétrage
Le paramétrage s’effectue dans le menu [Configuration] de SPIP, sous menu [Configurer CAS] :


Il est impératif sélectionner en premier le mode d’authentification intitulé “CAS ou SPIP” afin de vérifier, sans risque, le bon fonctionnement de l’authentification CAS.
Il convient de renseigner l’adresse du serveur CAS (sans la faire précéder de http://), le répertoire éventuel du serveur CAS (par exemple : /cas) et le port du serveur CAS (en général : 443).
Si l’identifiant renvoyé par le serveur CAS est l’adresse électronique de l’auteur, il est nécessaire de s’assurer que, dans SPIP, l’adresse de messagerie électronique de chaque auteur est bien renseignée.
Utilisation de l’authentification CAS
Au lieu d’accéder au formulaire d’authentification de SPIP, l’utilisateur est redirigé vers le formulaire d’authentification du serveur CAS.
Utilisation de l’authentification Hybride
Le plugin ajoute un lien « Utiliser l’authentification centralisée » dans le formulaire d’authentification de SPIP.

Chaque fois qu’il souhaitera s’authentifier, l’utilisateur pourra choisir soit de s’authentifier comme d’habitude avec SPIP, soit de cliquer sur le lien « Utiliser l’authentification centralisée » pour s’authentifier avec l’authentification centralisée.
Version 1.1 du plugin
La version 1.1 du plugin apporte :
- La compatibilité avec la version 5.3 de PHP.
- Pour mémoire, le plugin était déjà compatible avec la version 2.1 de SPIP.
- Par défaut, l’ordre de recherche du HOST dans les variables HTTP est celui du client phpCAS. Si les pratiques de l’hébergeur ne sont pas compatibles avec l’ordre du client phpCAS, on peut définir dans le fichier de paramétrage l’ordre à prendre en compte.
- La compatibilité avec d’anciennes adresses email est désormais paramétrable par fichier.
- A titre de réservation, ajout d’une possibilité de pipeline.
- L’utilisation de la version 1.1 du client phpCAS.
Version 1.2 du plugin
La version 1.2 du plugin corrige un bug.
Version 1.3 du plugin
La version 1.3 du plugin apporte l’utilisation de la version 1.2 du client phpCAS.
Version 1.32 du plugin
La version 1.32 du plugin apporte la compatibilité avec les versions 3.3.5 (et supérieures) des serveurs CAS.
Version 1.41 du plugin
La version 1.41 du plugin apporte l’utilisation de la version 1.3.1 du client phpCAS. Elle apporte également la compatibilité avec SPIP 3.
Version 1.44 du plugin
La version 1.44 du plugin évite un message inutile dans les fichiers de log de SPIP.
Version 1.5 du plugin
Prise en compte d’une évolution de SPIP 2.1.14 (logout en 2 étapes) dans la surcharge du fichier action/logout.php.
Passage à la version 1.3.2 de phpcas.
Possibilité de contrôler l’unicité de l’email lors de la création / modification d’un auteur (sauf si l’identifiant SSO est le login). Pour cela, il faut déclarer la constante ’_CICAS_ANTI_HACK’ dans le fichier config/mes_options.php avec la valeur ’oui’.
Version 1.6 du plugin
Le client PHP pour CAS (phpCAS), qui est livré avec le plugin, offre la possibilité d’utiliser une adresse pour le serveur CAS et une autre adresse lors de la validation du ticket, c’est-à-dire lorsque SPIP va interroger le serveur CAS.
La version 1.6 du plugin CICAS permet d’exploiter cette possibilité, via trois variables à ajouter dans le fichier de paramétrage. Ces trois variables sont décrites dans l’annexe du document de description du plugin, qui a été mise à jour corrélativement.
Version 1.8 du plugin
Dans le cas où le formulaire #LOGIN_PUBLIC
était utilisé dans un squelette autre que celui de la page “login” (par exemple dans le squelette rubrique ou article si on utilise un certain plugin d’accès restreint), l’adresse de la page ne comprenait pas le paramètre “&url=...” comme c’est le cas pour la page “login”. Aussi, la redirection après authentification, vers une page particulière, ne pouvait pas s’effectuer. La version 1.8 de CICAS prend en compte désormais ce cas particulier.
Version 2.0 du plugin
- Compatibilité avec SPIP 3.1.
- Utilisation de la dernière version (1.3.4) de la librairie phpCAS.
- Possibilité d’une protection anti robot d’indexation pour le formulaire de login, via la constante _CICAS_ANTI_BOT à placer dans un fichier d’options avec la valeur ’oui’.
- Possibilité d’offrir à l’utilisateur le choix entre plusieurs serveurs CAS.
- Possibilité de créer un auteur à la volée.
Version 2.1 du plugin
- Compatibilité avec SPIP 3.2.
- Utilisation de la dernière version (1.3.5) de la librairie phpCAS.
Pour plus de détails, se reporter à la documentation (mise à jour) du plugin CICAS jointe au présent article.
Version 2.2 du plugin
- Compatibilité (sous SPIP 3.2) avec PHP 7.0 et 7.1.
Version 2.4 du plugin
- Compatibilité avec PHP 7.2, 7.3 et 7.4.
Version 2.5 du plugin
- Compatibilité avec SPIP 4.0
Version 2.6 du plugin
- Compatibilité avec PHP 8.0 et 8.1
- Compatibilité avec SPIP 4.1
Version 3.0 du plugin
- Utilisation de la dernière version (1.6.1) de la librairie phpCAS.
- Compatibilité avec SPIP 4.2
- Nécessite une version 7 (ou supérieure) de PHP. En effet, la librairie phpCAS version 1.6.1 nécessite PHP version 7 ou supérieure.
Version 3.1 du plugin
- Compatibilité avec PHP 8.2
Discussions by date of activity
37 discussions
Bonjour,
Comment faire pour récupéré la liste des infos qui sont dans le ticket pour faire des traitements spécifique ensuite ?
Cordialement
Le plugin offre le pipeline ’cicas’ :
- objectif : effectuer d’autres actions lorsque l’authentification sur le serveur CAS a réussi mais que l’auteur n’existait pas dans SPIP (et que la configuration ne prévoit pas la création automatique d’auteur).
- paramètre args : Valeur de l’identifiant de l’utilisateur dans le serveur d’authentification (CAS)
- paramètre data : tableau vide
- retour attendu : (tableau associatif) auteur (c’est-à-dire un tableau équivalent au résultat d’une interrogation de la table ’spip_auteurs’ pour cet auteur)
Ok mais c’est un pipeline qui retourne pas grand chose.
Le besoin serait d’avoir par les groupes rattacher au profil sur le serveur cicas et d’autorisé ou non le login sur le site : je suis dans le groupe “ontourne” je ne dos pas pouvoir me loguer au site “test” mais uniquement à “ontourne”
Mon rôle n’est pas d’offrir une assistance à la réalisation d’une fonctionnalité sur mesure pour un site particulier.
Ce n’est pas ce que je demande mais je cherche le point d’entré dans le code pour récupéré les infos, pour le moment j’ai beau lire le code et je ne trouve pas.
Reply to this message
Résumé de différents échanges :
a) Question : Une url de login, avec cicas=oui, me redirige vers le site SSO, mais le domaine n’est plus le même : ?service=http%3A%2F%2F9ffe4f999293%2F%3Fcicas%3Doui
b) Réponse : La question posée semble similaire à la question suivante, posée dans les commentaires (et qui a eu une réponse) : cicas : plugin d’authentification avec CAS pour SPIP
c) Question : le chemin pour charger le fichier _config_cas.php ne marche pas.
d) Réponse : Si la constante _DIR_ETC contient autre chose que ’config/’, c’est qu’elle a été définie dans le fichier mes_options.php. Une solution consiste à placer le fichier _config_cas.php dans le dossier indiqué dans _DIR_ETC.
Reply to this message
Bonjour,
Est-ce que quelqu’un sait faire fonctionner ce SSO pour exploiter l’authentification de Google Workspace.
Ce dernier ne fais aucune mention de CAS mais de SAML.
Merci de vos lumières.
JuL
Reply to this message
Bonjour,
Avec SPIP 4.1.9 + Cicas 2.6.1, il m’est impossible de configurer le mode Hybride.
Par ailleurs, dans ecrire/?exec=cicas_serveurs avec aucun serveur additionnel, il y a cette erreur :
Warning: Invalid argument supplied for foreach() in /var/www/html/spip-svn/plugins/_cicas/exec/cicas_serveurs.php on line 44 Aucun serveur additionnel n'a été créé.
Bonjour,
Je n’arrive pas à reproduire le problème (avec CICAS 2.6.1 et SPIP 4.1.9).
Par ailleurs, je n’ai pas constaté de warning dans ecrire/?exec=cicas_serveurs.
Reply to this message
Bonjour,
Je vois que le CAS.php du plugins cicas_161005 est en version 1.3.4, hors cette version contient de multiples trous de sécurité (CVE-2012-5583, CVE-2010-2795, CVE-2010-2796,CVE-2010-3690,CVE-2010-3691,CVE-2010-3692, CVE-2012-1104, CVE-2012-1105).
Est ce qu’une nouvelle version du plugins est prévue pour corriger cela ?
Cordialement,
Il est totalement inexact d’écrire que la version 1.3.4 de phpCAS contient de multiples trous de sécurité (CVE-2012-5583, CVE-2010-2795, CVE-2010-2796,CVE-2010-3690,CVE-2010-3691,CVE-2010-3692, CVE-2012-1104, CVE-2012-1105).
En effet, ces failles de sécurité ont été corrigées par des versions antérieures à phpCAS 1.3.4 :
Reply to this message
Dans la version 2.0.0 de CICAS, le paramétrage par fichier de l’ordre de recherche du “host” dans les variables du serveur (cicashostordre) n’est pas pris en compte. C’est l’ordre par défaut qui s’applique (celui de phpCAS).
La version 2.0.1 de CICAS, jointe dans la présente page (cicas_161005.zip), règle ce problème.
Reply to this message
Bonjour,
Merci pour ce super plugin qui devrait bien me faciliter la vie :)
Par contre, je n’arrive pas à m’authentifier a partir de spip3 sur mon serveur CAS (version 3.3.5)
Dans les logs de phpcas j’ai ceci :
Je ne comprends pas trés bien ce qui se passe...
Le serveur CAS est derriere un firewall ou j’ai simplement ouvert le port du serveur CAS
Merci par avance pour votre aide précieuse,
Bonjour,
Ce problème concerne effectivement la librairie phpCAS.
Il convient de consulter, sur le forum de phpCAS, les problèmes déjà signalés (par exemple celui-ci https://github.com/Jasig/phpCAS/issues/175) puis, le cas échéant, de leur signaler ce problème.
Merci pour cette réponse rapide.
je me demande si je ne vais pas changer de version de serveur CAS car je pense que le problème peux venir de là...
Est ce que vous pouvez me conseiller une version ?
Je ne m’occupe pas de la partie serveur CAS.
Pour poser des questions sur le serveur CAS, des mailing-lists existent :
https://jasig.github.io/cas/Mailing-Lists.html
Reply to this message
Bonjour
Je viens d’installer Cicas 1.8.0 sur notre SPIP 3.0.17 pour un site que nous sommes en train de développer. Je l’ai configuré en spécifiant notre serveur CAS avec le mode hybride pour l’authentification.
Quand je me connecte avec le CAS, disons
http://www.toto.fr/spip.php?page=login
je clique ensuite sur authentification centralisé, le lien devient :
https://cas.XXXXXXX.fr/login?service=http%3A%2F%2Fproxy-lamp-free%2Fspip.php%3Fpage%3Dlogin%26cicas%3Doui
mon www.toto.fr a été remplacé par proxy-lamp-free
Merci pour votre aide
Cordialement
Karim
Le
http://www.toto.fr/ecrire/?exec=info&bonjour=oui
me montre
_SERVER[“HTTP_X_FORWARDED_HOST”] toto.fr
_SERVER[“HTTP_X_FORWARDED_SERVER”] proxy-lamp-free
il attrape le deuxieme
Comment changer ?
La documentation, indique en page 7 :
Par défaut, l’ordre de recherche du HOST dans les variables HTTP est celui de phpCAS, c’est-à-dire : ’HTTP_X_FORWARDED_SERVER’,’SERVER_NAME’,’HTTP_HOST’
Si l’hébergeur n’est pas compatible avec l’ordre de phpCAS, on peut définir l’ordre a prendre en compte.
Pour cela, un paramétrage par fichier est possible (le fichier doit être situé dans le dossier “/config/” de SPIP).
Nom du fichier : racine_du_site/config/_config_cas.php
Exemple de contenu du fichier :
Merci pour votre retour rapide
Cela fonctionne parfaitement.
Reply to this message
Bonjour
j’ai installé et configuré le plugin pour un accès mixte...
Cela fonctionne très bien à part un problème de redirection lorsqu’on veut directement se connecter à une page de notre intranet, nécessitant au préalable une authentification.
En effet au départ il y a bien redirection automatique vers la page d’authentification ; le lien vers l’authentification CAS fonctionne bien et renvoie bien les bonnes informations de login et d’autorisation...
mais ensuite on se retrouve sur la page d’accueil du backend et non sur la page sur laquelle on voulait se connecter.
je n’ai pas ce problème avec l’authentification normal... En passant par ce mode c’est ensuite bien redirigé sur la page de l’intranet sur laquelle on désire accéder
Quelqu’un aurait-il une explication et un moyen de corriger le problème ?
Ma version de SPIP est la 3.0.16. J’utilise en même temps le plugin acces restreint, je ne sais pas si cela peut être important.
merci d’avance
Séverine
Dans le cas où l’on veut directement se connecter à une page de l’intranet, nécessitant au préalable une authentification :
Lorsque la page d’authentification s’affiche, quelle est la fin de son adresse dans la barre d’adresse du navigateur (par exemple :
spip.php?page=login&url=spip.php%3Farticle108
) ?lorsque ma page d’authentification s’affiche j’ai bien l’url de la page sur laquelle je veux me connecter : monURL?mapage.html
et en roll over du lien [Use CAS authentification] j’ai bien monURL?mapage.html&cicas=oui
c’est étrange que ça ne fonctionne pas... oO’
En renseignant manuellement dans la barres d’adresse du navigateur, une adresse du type :
adresse du site/spip.php?page=login&url=spip.php%3Farticle2&cicas=oui
est-ce que le formulaire d’authentification s’affiche et est-ce que l’on est bien redirigé ensuite vers l’article 2 ?
ahhh oui ça marche... donc c’est là le problème... j’utilise le plugin couteau suisse pour gérer un format d’url “propres_qs” ce qui fait que mon url à la redirection sur la page de login est ?mapage.html et pas spip.php?page=login&url=mapage...
du coup le plugin ne reconnait pas l’url de la page.
y a-t-il un moyen de rêgler le problème sans avoir à revenir à un format d’url de base ?
merci d’avance
Severine
Dans le squelette qui contient le lien “se connecter”, il suffit de remplacer :
[(#SESSION{id_auteur}|non) | <a href="[(#URL_PAGE{login}|parametre_url{url,#SELF})]" rel="nofollow" class='login_modal'><:lien_connecter:></a>]
par :
[(#SESSION{id_auteur}|non) | <a href="spip.php?page=login&url=#SELF" rel="nofollow" class='login_modal'><:lien_connecter:></a>]
Bonjour,
nous avons le même problème que vous, nous ne trouvons pas comment rediriger les personnes vers la page intranet par exemple lorsqu’elles s’authentifie par le CAS.
Actuellement, les personnes sont redirigées vers /ecrire et ce n’est pas ce que nous voulons.
Si une âme charitable passe par là...merci
En renseignant manuellement dans la barre d’adresse du navigateur, une adresse du type :
adresse du site/spip.php?page=login&url=spip.php%3Farticle2&cicas=oui
est-ce que le formulaire d’authentification s’affiche et est-ce que l’on est bien redirigé ensuite vers l’article 2 ?
Oui manuellement tout fonctionne bien, l’URL de retour fonctionne bien.
Ceci:
nous renvoie vers :
Nous avons essayé de modifier inc/footer.html avec la solution au dessus mais cela n’a aucun effet sur l’URL produit (rubrique96).
Merci
Merci d’avoir indiqué l’adresse de la page. En effet, j’ai pu deviner que le squelette de rubrique contient le formulaire
#LOGIN_PUBLIC
(et que le site utilise un certain plugin d’accès restreint).L’adresse de cette page, qui affiche le formulaire d’authentification, ne comprend pas le paramètre “&url=...” comme c’est le cas pour la page “login”. Aussi, la redirection après authentification, vers une page particulière, ne pouvait pas s’effectuer.
La version 1.8 de CICAS (jointe au présent article) prend en compte désormais ce cas particulier.
C’est impeccable, merci beaucoup pour votre boulot et votre réactivité!
Merci pour ce retour.
Reply to this message
J’ai créé un fichier footer.html dans /squelettes/inclure en modifiant le lien.
J’ai vidé le cache également.
Je n’ai pas constaté d’évolution :
Je vois qu’il me manque la partie TARGET :
Merci de votre patience !
Stéphane
En renseignant manuellement dans la barre d’adresse du navigateur, une adresse du type :
adresse du site/spip.php?page=login&url=spip.php%3Farticle10&cicas=oui
est-ce que le formulaire d’authentification s’affiche et est-ce que l’on est bien redirigé ensuite vers l’article 10 ?
Lorsque je saisis directement l’adresse d’un article (adresse du site/spip.php?page=login&url=spip.php%3Farticle2&cicas=oui), le formulaire d’authentification Spip ne s’affiche pas.
On tombe directement sur le serveur CAS.
Après authentification CAS, on arrive à cette page “Mon Site Spip”, comme si le formulaire d’authentification Spip était tronqué (adresse = adresse du site/spip.php?page=login&url=spip.php%3Farticle2&cicas=oui&ticket=ST-1389298-MgjlfaLmISDR91CoS5Z7-domu-cas1) .
Merci +++
Stéphane
Pour le test précité, il faut utiliser le mode d’authentification “CAS ou SPIP” dans la configuration du plugin.
je confirme bien utiliser ce mode
Stéphane
En renseignant manuellement dans la barre d’adresse du navigateur, une adresse du type :
adresse du site/spip.php?page=login
est-ce que le formulaire d’authentification s’affiche ?
Bonjour,
Le formulaire d’authentification Spip apparaît bien en lançant
adresse du site/spip.php?page=login
Merci !
Stéphane
adresse du site/spip.php?page=login&url=spip.php%3Farticle10&cicas=oui
- Avec le mode d’authentification « CAS ou SPIP » : OK
- Supprimer tous les cookies du navigateur : OK
- Renseigner manuellement dans la barre d’adresse du navigateur, une adresse du type :
adresse du site/spip.php?page=login&url=spip.php%3Farticle2&cicas=oui
- Lorsque le formulaire d’authentification de CAS s’affiche, quelle est l’adresse qui figure dans la barre d’adresse du navigateur ?
https://cas.domaine/cas/login?service=http%3A%2F%2Fmonsite.domaine%2Fspip.php%3Fpage%3Dlogin%26url%3Dspip.php%253Farticle2%26cicas%3Doui
Merci !
Dans l’espace privé, renseigner manuellement dans la barre d’adresse du navigateur :
adresse du site/ecrire/?exec=info
Dans la page qui s’affiche, quelles sont les valeurs de :
- HTTP_X_FORWARDED_SERVER : je ne trouve pas cette variable
- SERVER_NAME : monsite.domaine
- HTTP_HOST : monsite.domaine
- REQUEST_URI : /ecrire/?exec=info
Merci !
Comme l’indique la présente page, le client phpCAS nécessite certains prérequis qu’il convient de vérifier : https://wiki.jasig.org/display/CASC/phpCAS+requirements.
Dans le cas où le formulaire #LOGIN_PUBLIC était utilisé dans un squelette autre que celui de la page “login” (par exemple dans le squelette rubrique ou article si on utilise un certain plugin d’accès restreint), l’adresse de la page ne comprenait pas le paramètre “&url=...” comme c’est le cas pour la page “login”.
Aussi, la redirection après authentification, vers une page particulière, ne pouvait pas s’effectuer.
La version 1.8 de CICAS prend en compte désormais ce cas particulier.
PHP/Curl n’était pas installé, prérequis nécessaire pour phpCAS.
La redirection fonctionne bien désormais.
Merci de votre patience et bravo pour ce plugin !
Reply to this message
Add a comment
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Follow the comments:
|
