cicas : plugin d’authentification avec CAS pour SPIP

Le plugin « cicas » permet d’utiliser un serveur SSO (Single Sign-On), basé sur CAS (Central Authentication Service), pour s’authentifier dans SPIP. Il permet en particulier un mode d’authentification hybride.

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.0 est compatible avec SPIP 3.0, 3.1, 3.2, 4.0, 4.1, 4.2.
CICAS version 3.0 est compatible avec PHP 7.0, 7.1, 7.2, 7.3, 7.4, 8.0, 8.1.
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.

Discussion

Une discussion

  • 1

    Bonjour,

    Avec SPIP 4.1.9 + Cicas 2.6.1, il m’est impossible de configurer le mode Hybride.

    • Si je mets CAS, dans spip_metas, la valeur stockée est ’oui’
    • Si je mets SPIP, dans spip_metas, la valeur stockée est ’non’
    • Mais Si je mets CAS ou SPIP, dans spip_metas, la valeur stockée est ’oui’ (au lieu de ’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.

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

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.

modération a priori

Attention, votre message n’apparaîtra qu’après avoir été relu et approuvé.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom