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.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

Discussion

34 discussions

  • 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

  • 1

    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 :

      • CVE-2012-5583 corrigé par la version 1.3.2 de phpCAS
      • CVE-2012-1104 corrigé par la version 1.3.0 de phpCAS
      • CVE-2012-1105 corrigé par la version 1.3.0 de phpCAS
      • CVE-2010-3690 corrigé par la version 1.1.3 de phpCAS
      • CVE-2010-3691 corrigé par la version 1.1.3 de phpCAS
      • CVE-2010-3692 corrigé par la version 1.1.3 de phpCAS
      • CVE-2010-2795 corrigé par la version 1.1.2 de phpCAS
      • CVE-2010-2796 corrigé par la version 1.1.2 de phpCAS

    Répondre à ce message

  • 1

    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).

    Répondre à ce message

  • 3

    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 :

    => CAS_Request_CurlRequest::sendRequest() [AbstractRequest.php:242]
               curl_exec() failed [CurlRequest.php:77]
        <= false
    

    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

      CAS Community List (cas-user)
      Focus: support, troubleshooting, general questions.
      Post to this list if you have a question about installing, configuring, or troubleshooting CAS.

    Répondre à ce message

  • 3

    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 :

      <?php
      $GLOBALS['ciconfig']['cicashostordre'] = array('HTTP_X_FORWARDED_HOST','SERVER_NAME','HTTP_HOST');
      ?>
    • Merci pour votre retour rapide
      Cela fonctionne parfaitement.

    Répondre à ce message

  • 11

    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 :

      https://lmb.univ-fcomte.fr/spip.php?page=login&url=spip.php%3Frubrique96&cicas=oui

      nous renvoie vers :

      https://lmb.univ-fcomte.fr/spip.php?rubrique96

      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.

    Répondre à ce message

  • 14

    J’ai créé un fichier footer.html dans /squelettes/inclure en modifiant le lien.

    [(#SESSION{id_auteur}|non) | <a href="[(#URL_PAGE{login}|parametre_url{url,#SELF})]" rel="nofollow" class='login_modal'><:lien_connecter:></a>]

    J’ai vidé le cache également.

    Je n’ai pas constaté d’évolution :

    310D .|    |    |    |    |    |    Final URI: http://monsite.domaine/spip.php?page=login&url=.%2F&cicas=oui [Client.php:3071]
    310D .|    |    |    |    |    <= 'http://monsite.domain/spip.php?page=login&url=.%2F&cicas=oui'
    310D .|    |    |    |    <= 'https://cas.domaine/cas/serviceValidate?service=http%3A%2F%2Fmonsite.domain%2Fspip.php%3Fpage%3Dlogin%26url%3D.%252F%26cicas%3Doui'
    310D .|    |    |    |    => CAS_Client::_readURL('https://cas.domaine/cas/serviceValidate?service=http%3A%2F%2Fmonsite.domain%2Fspip.php%3Fpage%3Dlogin%26url%3D.%252F%26
    cicas%3Doui&ticket=ST-1387979-ElgRKuNGbiDlB29lVyi0-domu-cas1', NULL, NULL, NULL) [Client.php:2762]

    Je vois qu’il me manque la partie TARGET :

    TARGET=http%3A%2F2Fmonsite.domaine
    %2Fspip.php%3Fpage%3Dlogin%26url%3Dspip.php%253Farticle10
    %26cicas%3Doui

    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) .

      DFCD .|    |    |    |    |    |    Final URI: http://site.domaine/spip.php?page=login&url=spip.php%3Farticle2&cicas=oui [Client.php:3071]
      DFCD .|    |    |    |    |    <= 'http://site.domaine/spip.php?page=login&url=spip.php%3Farticle2&cicas=oui'
      DFCD .|    |    |    |    <= 'https://cas.domaine/cas/serviceValidate?service=http%3A%2F%2Fsite.domaine%2Fspip.php%3Fpage%3Dlogin%26url%3Dspip.php%253Farticle2%26cicas%
      3Doui'
      DFCD .|    |    |    |    => CAS_Client::_readURL('https://cas.domaine/cas/serviceValidate?service=http%3A%2F%2Fsite.domaine%2Fspip.php%3Fpage%3Dlogin%26url%3Dspip.php%
      253Farticle2%26cicas%3Doui&ticket=ST-1389298-MgjlfaLmISDR91CoS5Z7-domu-cas1', NULL, NULL, NULL) [Client.php:2762]
      DFCD .|    |    |    |    |    => CAS_Request_CurlRequest::sendRequest() [AbstractRequest.php:220]

      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

    • Equipement

      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

      • Avec le mode d’authentification « CAS ou SPIP »
      • Supprimer tous les cookies du navigateur
      • Renseigner 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
      • Lorsque le formulaire d’authentification de CAS s’affiche, quelle est l’adresse qui figure dans la barre d’adresse du navigateur ?
    • -  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
      • SERVER_NAME
      • HTTP_HOST
      • REQUEST_URI
    • -  HTTP_X_FORWARDED_SERVER : je ne trouve pas cette variable
      -  SERVER_NAME : monsite.domaine
      -  HTTP_HOST : monsite.domaine
      -  REQUEST_URI : /ecrire/ ?exec=info

      Merci !

      • Avec le mode d’authentification « CAS ou SPIP »
      • Supprimer tous les cookies du navigateur
      • Supprimer tmp/phpCAS.log
      • Afficher un article sur le site public
      • S’authentifier avec CAS
      • Me communiquer le contenu du phpCAS.log (et pas seulement un extrait)
    • 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 !

    Répondre à ce message

  • 3

    Bonjour,
    j’utilise SPIP 2.1.26 et j’ai le même type d’erreur que déjà mentionné mais je n’arrive pas à solutionner mon problème.
    Le message cicas_erreur3 (« Erreur de connexion : Problème d’accès à l’espace privé ») indique qu’un visiteur tente d’entrer dans l’espace privé de SPIP.
    Comme SPIP n’autorise pas les visiteurs à rentrer dans l’espace privé, le lien d’authentification ne doit pas renvoyer sur l’espace privé de SPIP mais doit renvoyer sur la page du site public.
    SImplement je n’arrive pas à savoir comment lui expliciter cette adresse public.
    Peut etre important j’ai le plugin "Acces restreint"
    Merci pour votre aide.

    • Comme SPIP n’autorise pas les visiteurs à rentrer dans l’espace privé, le lien d’authentification ne doit pas renvoyer sur l’espace privé de SPIP mais doit renvoyer sur la page du site public.

      Un exemple se trouve dans le squelette de SPIP 3.0 : squelettes-dist/inclure/footer.html :

      a) Pour se connecter, les auteurs non authentifiés cliquent sur un lien vers la page de login de SPIP avec la page actuelle comme adresse de retour :
      [(#SESSION{id_auteur}|non) | <a href="[(#URL_PAGE{login}|parametre_url{url,#SELF})]" rel="nofollow" class='login_modal'><:lien_connecter:></a>]

      b) Les auteurs non authentifiés cliquent sur un lien vers l’espace privé de SPIP :
      [(#AUTORISER{ecrire})| <a href="#EVAL{_DIR_RESTREINT_ABS}"><:espace_prive:></a>]

    • Merci beaucoup pour votre réponse mais cela ne m’avance guère.
      En fait, avec le plugin "Acces restreint’ j’ai bloqué l’acces à une page « intranet ».
      Sans votre plugin, quand on se connecte sur cette page « intranet » on demande automatiqument les login et pwd simplement je veux utiliser un serveur CAS pour le faire.
      J’ai donc ajouter votre plugin CICAS.
      Maintenant, quand les gens veulent se connecter a l’intranet ils tombent sur la page ou l’on peut se connecter via le compte spip ou vias le CAS. Si les gens se connecte via le serveur CAS et que j’ai préalablement enregistré le compte de la personne en « redacteur » ils tombe directement sur l’espace prive du site ce qui n’est pas mon objectif. Si j’enregistre l’auteur en « visiteur » alors je tombe sur cette cicar_erreur3. J’ai essayé d’interprété votre solution mais j’ai l’impression que cela rentre en conflit avec la page en acces restreint du plugin « Acess Restreint » ??? ou laors j’ai mal fait la modif ce qui est plus vraissemblable. J’ai bien essayé de retiré le plugin « Acess Restreint » mais alors le souci est que je ne sais pas comment activer cicas quand le visiteur clique sur mon lien « intranet ».
      J’espère avoir été assez clair et merci encore pour votre patience.

    • Dans le cas où le formulaire #LOGIN_PUBLIC est 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 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 peut pas s’effectuer.

      La version 1.8 de CICAS prend en compte désormais ce cas particulier.

    Répondre à ce message

  • 4
    laurent

    Bonjour,

    l’authentification se fait bien. (SPIP 3.0.17) mais un rédacteur dont on a préalablement attribué un article ne peut modifier l’article. Quand il se connecte, il lui est bien listé ses différents articles mais il ne peut voir le bouton « modifier » quand il sélectionne l’article. Quand on force avec l’url de type http://sit.com/ecrire/?exec=article_edit&id_article=100 : « Vous n’avez pas le droit d’accéder à la page article_edit. » s’affiche.

    Cordialement.

    • Est-ce que, dans listes des auteurs dans SPIP, deux auteurs ont le même email ?

    • laurent

      Oui, c’était le cas pour un utilisateur (moi) qui avait un login spip et un cas mais pas les autres utilisateurs.
      Merci de toute indication.

      Cordialement.

    • CICAS recherche quel auteur (au sens SPIP) s’est authentifié (en se basant sur l’identifiant CAS, par exemple l’email). S’il n’y a pas de doublon d’email dans les auteurs de SPIP (ou de doublon de login si l’identifiant CAS est stocké dans le champ login de SPIP), alors il n’y a pas de confusion possible sur l’auteur qui vient de s’authentifier.
      Est-ce qu’en passant par l’authentification SPIP (au lieu de CAS), le rédacteur en question arrive à modifier l’article ?

    • laurent

      C’est mon SPIP qui ne prends plus en charge les droits car effectivement, avec un utilisateur SPIP, j’ai le même problème. Cicas n’est pas en cause. Désolé.

      Cordialement.

    Répondre à ce message

  • 6

    Merci pour ce plugin,
    il fonctionne très bien si c’est un auteur, en revanche si dans spip 3 je le passe en visiteur (authentifié par cicas) je tombe sur la page cicas_erreur3 (« Erreur de connexion :Problème d’accès à l’espace privé »).
    Si ce visiteur (même login) s’authentifie par le menu spip, il a accès a mon intranet.
    Avez vous une idée ?
    Merci d’avance
    MG

    • Le message cicas_erreur3 (« Erreur de connexion : Problème d’accès à l’espace privé ») indique qu’un visiteur tente d’entrer dans l’espace privé de SPIP.

      Comme SPIP n’autorise pas les visiteurs à rentrer dans l’espace privé, le lien d’authentification ne doit pas renvoyer sur l’espace privé de SPIP mais doit renvoyer sur la page du site public.
      Un exemple se trouve dans le squelette de SPIP 3.0 : squelettes-dist/inclure/footer.html

    • Tompte

      Bonjour ,
      Tout comme Michael j’ai le problème du cicas_erreur3 pour mes comptes visiteurs.
      J’avoue ne pas bien connaitre Spip mais je dois m’occuper de la CASsification.
      Nous avons un serveur CAS LemonLDAP avec un portail.
      Le mode de fonctionnement est le suivant :
      - les personnes s’identifie sur le portail CAS
      - Ils cliquent sur les icônes des sites auquels ils peuvent avoir accès
      - ils sont envoyé vers le site avec leur id, cookies, etc ...
      L’adresse utilisé pour notre site Spip est http://xxxyyy.xxx/spip/?cicas=oui
      Pour les comptes Rédacteurs et Admin cela fonctionne très bien.
      Merci d’avance pour votre aide
      P

    • Comme SPIP n’autorise pas les visiteurs à rentrer dans l’espace privé, le lien d’authentification ne doit pas renvoyer sur l’espace privé de SPIP mais doit renvoyer sur la page du site public.

      Un exemple se trouve dans le squelette de SPIP 3.0 : squelettes-dist/inclure/footer.html :

      a) Pour se connecter, les auteurs non authentifiés cliquent sur un lien vers la page de login de SPIP avec la page actuelle comme adresse de retour :
      [(#SESSION{id_auteur}|non) | <a href="[(#URL_PAGE{login}|parametre_url{url,#SELF})]" rel="nofollow" class='login_modal'><:lien_connecter:></a>]

      b) Les auteurs non authentifiés cliquent sur un lien vers l’espace privé de SPIP :
      [(#AUTORISER{ecrire})| <a href="#EVAL{_DIR_RESTREINT_ABS}"><:espace_prive:></a>]

    • Tompte

      Merci beaucoup pour la réponse.
      Malheureusement elle ne résous pas mon problème ou alors il y a quelque chose qui m’échappe !
      Je comprends bien comment faire un lien sur le site SPIP redirigeant vers la page écrire ou non suivant le profile.
      Dans mon cas cependant, le lien n’est pas sur le site SPIP mais sur un Portail extérieur.
      Actuellement notre Portail pointe vers http://xxxyyy.xxx/spip/?cicas=oui ce qui fonctionne très bien avec les Auteurs mais pas avec les visiteurs.
      Comment faire pointer le lien du Portail sur une page non Privé de Spip ?
      D’avance merci pour ton aise
      P

    • Il suffit d’utiliser la syntaxe d’URL du a) et, en mode d’authentification hybride, d’ajouter cicas=oui.

      Par exemple :
      http://monsite/spip.php ?page=login&url=spip.php?page=sommaire&cicas=oui

    • Tompte

      Merci beaucoup
      Je n’avais pas saisi la subtilité ;c)
      Maintenant cela fonctionne parfaitement
      P

    Répondre à ce message

  • 1

    Bonjour,
    Je vais poser une question probablement stupide mais il faut que quelqu’un se dévoue ... Après avoir tout lu, il me manque une brique : le serveur ! De toute cette lecture et de la lecture des commentaires, je n’arrive pas à comprendre ... j’ai l’impression que pour tous ces utilisateurs, le serveur CAS est existant (pas mal d’universités d’après les url ...), mais je ne vois nulle part mentionné ou est ce serveur, qui le gère ... c’est un équipement spécifique à ces établissements ? un serveur central à Yale (bonjour la NSA :-) ? chacun s’installe son serveur ? une piste ?
    J’avais prévenu que c’était une question pas très smart ...
    Pierre

    • Bonjour,

      D’abord bravo et merci pour votre plugin et sa documentation.

      je rebondi sur la question de Pierre car elle soulève une autre question : à qui s’adresse cette solution ?

      Serait-il juste de dire que l’authentification avec CAS s’adresse d’abord à des structures ayant les moyens (ou le temps) d’installer, configurer et surtout maintenir son propre serveur CAS ?
      Si oui, avez-vous un retour d’expérience à fournir à ce sujet ?

      merci merci

    Répondre à ce message

  • 1

    Résumé du mail du 18/12/2013 11h03 :
    Serait-il possible que CICAS distingue l’URL d’authentification, vers laquelle il redirige l’internaute pour s’authentifier, et l’URL de confirmation, utilisée pour les échanges entre SPIP et le serveur CAS ?

    • 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.

    Répondre à ce message

  • 4

    Bonjour,

    Y’a-t-il la possibilité de configurer le plugin pour qu’un utilisateur s’authentifiant par le CAS mais n’ayant pas de compte SPIP soit ajouter automatiquement avec le statut "visiteur" dans SPIP ?

    Actuellement une personne n’ayant pas de compte SPIP et voulant se connecter par le CAS obtient le message suivant :

    « Vous avez bien été authentifié par le serveur CAS, mais votre adresse électronique (ou votre login) est introuvable dans SPIP. Veuillez contacter le webmestre du site. »

    J’ai vu dans vos précédents commentaires qu’un pipeline peut être activé pour les besoins spécifiques. Comment peut-on l’activer ?

    Merci d’avance pour la réponse.


    SPIP 2.1.23
    CICAS 1.32

    • Pour les besoins spécifiques, le plugin offre un pipeline : pipeline(’cicas’, array(’args’ => $ci_cas_userid,’data’ => array()));.

      Ce pipeline est déclenché lorsqu’une personne s’est authentifiée avec succès sur CAS, mais qu’elle ne figure pas dans SPIP.

      Le plugin spécifique qui utilisera ce pipeline, recevra l’identifiant CAS de la personne dans $param['args'] (par exemple son email), pourra faire ce qu’il souhaite (par exemple créer la personne dans SPIP avec le statut visiteur) et devra renvoyer au pipeline dans $param['data'] un tableau PHP contenant les caractéristiques de l’auteur, par exemple : array('id_auteur'=>15,'statut'=>'6forum').

      Pour savoir comment utiliser un pipeline, il convient de se reporter à la documentation de SPIP : http://programmer.spip.net/Utiliser-les-pipelines

    • (Re)Bonjour,

      Merci pour la réponse rapide.
      Après avoir lu votre lien (et les autres articles), j’ai donc tenté d’ajouter un pipeline dans "plugin.xml" du cicas mais sans succès.
      J’ai du mal à déterminé le nom du pipeline dans ce cas-là.

      Voici mon entrée à rajouter dans plugin.xml :
      « 

      login
      inc/cicas_login.php
      </pipeline »

      J’ai peut-être probablement sauté une étape.

      Merci d’avance pour vos explications.

    • J’ajoute les détails à ma réponse du haut qui n’ont pas été pris en compte désolé.

      < pipeline>
      < nom>login< /nom>
      < inclure>inc/cicas_login.php< /inclure>
      < /pipeline>

    • Il ne faut pas modifier le plugin CICAS. Le pipeline de CICAS doit être utilisé par un autre plugin.

    Répondre à ce message

  • 4

    Je n’arrive pas à faire marcher l’authentification SSO avec CICAS.
    En fait, j’utilise SPIP 2.1.23 et j’ai installé le plugin CICAS fourni dans cet article.

    La redirection se fait normalement vers le serveur cas, mis sur un serveur à part mais sur le même réseau. Je renseigne mon login et mot de passe de mon Contrôleur de domaine mais je reçois le fameux message : « Authentification CAS infructueuse ».

    Par contre j’ai bien modifier le fichier inc/php_login en supprimant les deux //.

    Merci de m’aider !

    Répondre à ce message

  • 1

    Bonjour et merci pour ce plugin.
    Serait-il possible que le plugin « respecte les paramétrages » choisis par le webmestre ? A savoir qu’une personne qui se connecte pour la première fois est inscrite(ou non) comme visiteuse ?
    Pour l’instant pour qu’une authentification CAS fonctionne il faut que la personne soit déjà présente dans SPIP.
    Ou peut-être serait-il possible en cas d’échec de l’authentification CAS de lui proposer une authentification LDAP ... ce qui réaliserait l’inscription permattant l’authentification CAS lors d’une connexion ultérieure ?

    Merci d’avance pour votre réponse.

    • Bonjour,
      C’est pour des raisons de sécurité, qu’il est nécessaire que la personne soit déjà présente dans SPIP.

      Pour information, le plugin CIIMPORT permet d’importer en masse des auteurs dans SPIP.

      Pour les besoins spécifiques, le plugin offre un pipeline : pipeline(’cicas’, array(’args’ => $ci_cas_userid,’data’ => array()));.

      Ce pipeline est déclenché lorsqu’une personne s’est authentifiée avec succès sur CAS, mais qu’elle ne figure pas dans SPIP.

      Le plugin spécifique qui utilisera ce pipeline, recevra l’identifiant CAS de la personne dans $param['args'] (par exemple son email), pourra faire ce qu’il souhaite (par exemple créer la personne dans SPIP avec le statut visiteur) et devra renvoyer au pipeline dans $param['data'] un tableau PHP contenant les caractéristiques de l’auteur, par exemple : array('id_auteur'=>15,'statut'=>'6forum').

    Répondre à ce message

  • 7

    Bonjour,
    j’ai installé le plugin cicas sur un spip 3... mais ça ne fonctionne pas ! Je suis sur des paramètres (les mêmes que sur un spip de version antérieur), mais rien n’y fait.
    Y-a-t’il une modification à faire sur le serveur pour le plugin fonctionne (bibliothèque à ajouter ou service apache à activer) ?
    Merci d’avance.

    • Bonjour,
      Sur mon serveur de test, avec un site sous SPIP 3.0.5 et le plugin CAS version 1.44, cela fonctionne très bien.

    • Merci pour cette confirmation que cela fonctionne. Je sais au moins que cela est possible.

    • Quelle est la version de CICAS utilisée ? Quelle est la version de SPIP utilisée ?
      Lors de l’authentification, à quel moment cela ne fonctionne pas et quel est le résultat ?

    • Alors le spip c’est le 3.0.5 et la version cicas 1.44.

      Le spip est sur un serveur debian 6 sur une VM sur un serveur interne. Je n’ai pas de problème pour tout le reste.
      Le sso est sur un serveur externe. Le sso fonctionne bien avec d’autre site et est géré par quelqu’un d’autre, mais ce n’est pas du côté du sso le problème.
      Lorsque, après connexion on revient sur le site (url = http://192.168.1.18/spip.php?page=login&url=%2Fecrire%2F&cicas=oui&ticket=ST-1360765820r812BABB8FD6F94BF45) j’ai un message d’erreur « format spip » (voir image ci-jointe)

      Merci d’ t’intéresser au problème.

    • Ce message est généré par le client phpCAS.
      Pour en savoir plus, une solution consiste à activer la trace de phpCAS.
      Pour cela :
      -  dans le fichier cicas/inc/cicas_login.php, ligne 34 supprimer les // devant phpCAS::setDebug() ;
      -  tenter une authentification
      -  regarder dans le répertoir tmp de Linux (pas celui de SPIP) le contenu du fichier phpCAS.log.
      A noter qu’on peut personnaliser l’emplacement du fichier de log : phpCAS::setDebug (« /chemin_vers/fichier.log ») ;

    • Super.
      Merci beaucoup. Je ne savais vraiment pas comment aborder le problème. Je ne manquerais pas de signaler si je m’en sors.

    • Bonjour,
      effectivement, le fait de voir les log m’a fait comprendre que le problème venait d’un truc à la fois simple et stupide.
      Nous avons changer le routeur dans notre boite et (je passe les détails), la VM n’avait plus de connection internet. Elle fonctionnait bien sur le réseau interne mais pas de connection vers l’extérieur, donc pas de communication avec le sso.
      Rétablissement de la connection et dnoc SSO qui fonctionne sans problème.
      Encore merci pour ton aide, étant autodidacte dans le domaine, j’ai des réflexes qui ne sont pas encore établis.
      Bonne journée.

    Répondre à ce message

  • 1

    Mail du 12/02/2013 17h59 :
    L’authentification CAS s’appuie sur l’adresse mél. Lorsque plusieurs auteurs spip possèdent la même adresse mél, la documentation indique que l’auteur retenu est celui ayant le plus de droits. Or sur un site qui comporte 2 auteurs ayant la même adresse, l’un étant administrateur et l’autre visiteur, il arrive que ce soit l’auteur visiteur qui est retenu.

    • La version du 13/02/2013, qui figure dans cette page, corrige ce problème qui se produit lorsque plusieurs auteurs possèdent la même adresse électronique dans SPIP.

    Répondre à ce message

  • 1

    Bonjour,
    Je souhaite protéger l’accès de certaines pages publiques.
    après authentifiction réussie à mon serveur CAS, je ne suis pas redirigée vers mon article, j’ai ce message suivant :

    « Vous avez bien été authentifié par le serveur CAS, mais votre adresse électronique (ou votre login) est introuvable dans SPIP. Veuillez contacter le webmestre du site. »

    Je ne souhaite pas référencer les visiteurs, est-ce possible ?
    Merci d’avance

    • Bonjour,
      Seules les personnes qui ont un compte dans SPIP (administrateur, rédacteur ou visiteur) peuvent s’identifier via CICAS.

    Répondre à ce message

  • 4

    Sur une install fraîche SPIP 3.0.1 [19436] :

    exception 'Exception' with message 'Class CAS_Client could not be loaded from CAS/Client.php, file does not exist (include_path=".:/Web/apps/php5/lib/php:/Web/data/htdocs/spiptest2") [CAS_autoload]' in /Web/data/htdocs/spiptest2/plugins/cicas/CAS/Autoload.php:44 Stack trace: #0 [internal function]: CAS_autoload('CAS_Client') #1 /Web/data/htdocs/spiptest2/plugins/cicas/CAS.php(344): spl_autoload_call('CAS_Client') #2 /Web/data/htdocs/spiptest2/plugins/cicas/inc/cicas_login.php(44): phpCAS::client('2.0', 'apps.univ-lr.fr', 443, '/cas/') #3 /Web/data/htdocs/spiptest2/ecrire/inc/utils.php(951): include_once('/Web/data/htdoc...') #4 /Web/data/htdocs/spiptest2/ecrire/inc/utils.php(90): find_in_path('inc/cicas_login...', '', true) #5 /Web/data/htdocs/spiptest2/plugins/cicas/cicas_pipeline.php(32): include_spip('inc/cicas_login') #6 [internal function]: cicas_recuperer_fond(Array) #7 /Web/data/htdocs/spiptest2/ecrire/inc/utils.php(114): call_user_func('cicas_recuperer...', Array) #8 /Web/data/htdocs/spiptest2/tmp/cache/charger_pipelines.php(908): minipipe('cicas_recuperer...', Array) #9 /Web/data/htdocs/spiptest2/ecrire/inc/utils.php(151): execute_pipeline_recuperer_fond(Array) #10 /Web/data/htdocs/spiptest2/ecrire/inc/utils.php(2060): pipeline('recuperer_fond', Array) #11 /Web/data/htdocs/spiptest2/ecrire/public/assembler.php(316): recuperer_fond('formulaires/log...', Array, Array) #12 /Web/data/htdocs/spiptest2/ecrire/public/assembler.php(298): inclure_balise_dynamique(Array, true, Array) #13 /Web/data/htdocs/spiptest2/ecrire/public/evaluer_page.php(43) : eval()'d code(61): inserer_balise_dynamique(Array, Array) #14 /Web/data/htdocs/spiptest2/ecrire/public/evaluer_page.php(43): eval() #15 /Web/data/htdocs/spiptest2/ecrire/public.php(151): include('/Web/data/htdoc...') #16 /Web/data/htdocs/spiptest2/spip.php(24): include('/Web/data/htdoc...') #17 {main}

    • Oups, copier/coller incomplet :(

      -  Les droits d’écriture sont ok,
      -  Des Spip2x fonctionnent avec les mêmes paramètres / configuration.

    • Je n’arrive pas à reproduire le problème avec CICAS v1.4 sous SPIP 3.0.1 [19436].

      J’ai noté que la version 1.3.1 de phpCAS, qui date du 26/04/2012, « fix a __autoload conflicts in the autoloader ». Aussi, j’ai intégré la version 1.3.1 de phpCAS dans la version 1.41 de CICAS (jointe à cet article).

    • Merci - testé, même problème :(
      Je cherche et vous tiens au courant.

    • Equipement

      Bonjour,
      Un problème identique m’a été signalé. Il provenait du fait que le nom des fichiers était transformé en minuscules lors du transfert FTP sur le serveur.

    Répondre à ce message

  • 1

    Merci pour le plugin, il fonctionne très bien.

    Un commentaire : il est nécessaire d’installer le support curl pour php, sinon la connexion ne marche pas, et sans donner d’erreur. Pour installer sous Debian/Ubuntu :

    sudo aptitude install php5-curl
    sudo service apache2 restart
    

    Une question, êtes vous d’accord pour mettre le plugin sur la zone, pour qu’on puisse contribuer au code ? En particulier, je voudrais le traduire à l’espagnol.

    Et sinon, une évolution qui me paraît intéressante serait de créer un auteur dans la base de SPIP s’il n’existe pas encore, de la même façon que pour « LDAP » :http://www.spip.net/fr_article1910.html.

    • a) Le client phpCAS nécessite effectivement certains prérequis (par exemple CURL). J’ai modifié le présent article pour le signaler.

      b) Pour des questions de sécurité, je ne suis pas d’accord pour mettre ce plugin sur la zone. En revanche, si l’on me donne un fichier de traduction en espagnol, je l’ajouterais au plugin.

      c) Pour les besoins spécifiques, le plugin offre un pipeline : pipeline(’cicas’, array(’args’ => $ci_cas_userid,’data’ => array())) ;

    Répondre à ce message

  • 4
    Vincent

    Bonjour,

    J’ai mise en place le plugin CICAS (version 1.41) mais je rencontre le problème suivant après paramétrages :
    l’adresse URL de mon service d’authentification comporte deux // ( ici en gras) :

    https://cas-uds.grenet.fr//login?service=http%3A%2F%2Fedytem.univ-savoie.fr%2Fspip.php%3Fpage%3Dlogin%26url%3D%252Fecrire%252F%26cicas%3Doui

    et je suis donc obligé d’en enlever un pour que mon authentification fonctionne.

    Avez-vous eu ce problème et avez-vous une idée pour le résoudre ?

    Merci d’avance pour vos réponses,
    Bien cordialement,
    Vincent

    SPIP 2.1.10
    CICAS 1.41

    • Equipement

      Bonjour,
      L’adresse https://cas-uds.grenet.fr/login?service=... fonctionne avec un seul slash avant « login ».
      La RFC3986, qui spécifie la syntaxe des URL, mentionne le double slash uniquement au début de l’adresse.
      Cordialement
      Equipement

    • Bonjour,

      En effet l’adresse ne fonctionne bien qu’avec un seul slash.
      Mais en fait le problème est que lorsque j’utilise l’authentification centralisée avec Cicas l’adresse d’authentification proposée en comporte deux ce qui impose d’en enlever un manuellement.
      J’ai pourtant rempli correctement les informations demandées concernant les paramètres du serveur cas en question (nom du serveur, dossier CAS : / , port utilisé : 443).
      J’ai aussi fait cela sur une installation vierge de SPIP pour mettre de côté d’éventuels interactions avec d’autres plugins, je rencontre le même problème.

      Je suis donc bloqué avec l’utilisation de ce plugin et je suis surpris d’être le seul à rencontrer cette difficulté.

      Merci d’avance pour vos réponses qui pourraient résoudre ce problème.
      Bien cordialement,
      Vincent

      SPIP 2.1.10
      CICAS 1.41

    • Bonjour,
      Une piste consisite à essayer la nouvelle version CICAS 1.42 jointe à cet article et de ne rien mettre dans « dossier CAS ». Merci de m’indiquer si cela règle le problème.
      Cordialement
      Equipement

    • Merci vraiment pour votre réactivité.
      En effet sur la version 1.41 de CICAS, j’étais obligé de mettre un chemin pour le répertoire du serveur CAS et je mettais donc / .
      Maintenant en ne mettant rien, ce qui est possible avec la version 1.42, cela marche. Le problème est réglé.

      Bien cordialement,
      Vincent

    Répondre à ce message

  • La version 1.4 du plugin apporte l’utilisation de la version 1.3 du client phpCAS. Elle apporte également la compatibilité avec SPIP 3.

    Répondre à ce message

  • 8

    Salut,

    J’ai le même problème que LC, l’authentification cicas fonctionne mais je suis envoyé dans la partie « ecrire » alors que j’aimerai être redirigé vers mon intranet (ex : www.monsite.fr/rubrique50 )

    j’ai modifié le fichier cicas_pipeline.php, en remplacant self() par $GLOBALS[’meta’][’www.monsite.fr/rubrique50’] mais ca ne fonctionne pas.

    Pouvez vous m’aider pour la redirection ?

    • Bonjour,
      Pour que phpCAS puisse rediriger sur une page particulière, il faut que le lien permettant de s’authentifier (sans entrer dans l’espace privé) précise l’URL de la redirection dans la variable ’url’.

      <a href="[(#URL_PAGE{login}|parametre_url{url,#URL_SITE_SPIP})]"> Authentification</a>
    • merci mais j utilise le plugin accès restreint et donc pas de lien pour préciser la redirection. Enfin je ne vois pas ou mettre cette redirection.

    • Comment arrive-t-on sur le formulaire d’authentification ?

    • 	    <li><a href="#URL_RUBRIQUE">[(#TITRE|supprimer_numero)]</a></li>
    • Pour arriver sur le formulaire d’authentification, il faut un lien qui contienne :

      #URL_PAGE{login}
    • merci équipement pour ton aide.

      j’ai réussi avec ce lien :

      <li><a href="[(#URL_PAGE{login}|parametre_url{url,http://www.monsite.fr/rubrique50.php})]"> Intranet </a><li>

      L’utilisateur clique sur le lien Intranet, puis si il s’authentifie avec le CAS, cela fonctionne par contre si il repasse dans le site public puis ensuite reclique sur le lien ’intranet’, il arrive sur une page vide de spip.

      Alors que si je m’authentifie avec les comptes locaux de spip, je peux passer du lien Intranet au site public sans soucis.

      c’est un problème important car mes visiteurs font bcp d aller retour entre le site public et la partie intranet et j’ai du mal a identifié si le problème vient de mon lien, du plugin cicas, du plugin acces restreint...
      il me reste ce dernier soucis avant de passer en prod si quelqu’un a une idée

    • Cela relève de l’élaboration des squelettes. Exemple de piste :

      [(#SESSION{id_auteur}|?{' '}|oui) 
      <li><a href="#URL_RUBRIQUE">[(#TITRE|supprimer_numero)]</a></li>
      ]
      [(#SESSION{id_auteur}|?{'',' '}|oui)
      <li><a href="[(#URL_PAGE{login}|parametre_url{url,rubrique50.php})]"> Intranet </a><li>
      ]
    • Ca fonctionne dans tous les cas :) , merci pour le temps que tu as consacré.

    Répondre à ce message

  • 1

    bonjour, je voulais savoir en cas de plantage du serveur CAS si on peux repasser facilement en mode authentification SPIP ? j ai testé un plugin LDAP et suite a une maj de SPIP, il n’étais plus compatible et je ne pouvais plus me connecter.

    • Bonjour, en cas de plantage du serveur CAS, il suffit de créer un fichier de paramétrage en indiquant le mode d’authentification « hybride », comme cela est détaillé dans la documentation en page 6.

    Répondre à ce message

  • 7

    Il me semble que ma question a été plus ou moins posée cepandnat je ne comprends pas bien la reponse. Mon authenfication fonctionne cependant la redirection se fait dans l’espace privé ?? or j’ai :
    <form id=« formulaire_login » method=« post » action=« /intranet/spip.php ?rubrique27 » , l’url semble correcte ?
    Pouvez m’aiguiller d’avance merci

    • Equipement

      Quelle est la version de CICAS qui est utilisée ?
      Quelle est l’adresse dans le navigateur, lorsque le formulaire d’authentification CAS apparaît ?

    • Desole
      l’url lors de l’authentification est : (http://xxxx/intranet/spip.php?rubrique27) et je suis renvoye par cicas sur (http://xxxx/intranet/ecrire/?bonjour=oui)mais dans la partie privee pourquoi ? ; ma question est la suivante je souhaiterais une redirection vers la page d’accueil publique (http://xxxx/intranet/ par exemple). comment procede t on ?
      Merci bien

    • Equipement

      Bonjour,
      Pour que phpCAS puisse rediriger sur la page d’accueil du site public, il faut que le lien permettant de s’authentifier (sans entrer dans l’espace privé) précise l’URL de la page d’accueil dans la variable ’url’.

      Exemple de lien :

      <a href="[(#URL_PAGE{login}|parametre_url{url,#URL_SITE_SPIP})]"> Authentification</a>
    • Merci cependant ca n’explique cependant pas pourquoi je suis redirigé vers la partie « ecrire » de spip. D’autre part pour mieux comprendre toutes mes rubriques sont d’accès restreint, la page d’accueil du user est son authentification. Suite à quoi je voudrai qu’il tombe sur la page « accueil » de spip et visualiser mes rubriques « à noter », « actualité » ... qui sont elles à accès restreint.
      Merci encore pour votre aide.

    • Dans ce cas spécifique, où la page d’accueil du user est son authentification, pour
      rediriger sur la page d’accueil du site public, il faut que l’URL d’accueil du user contienne le paramètre &url=... (en indiquant l’adresse relative de la page d’accueil du site public).

      Exemple d’URL d’accueil du user : nn.nn.nn.nn/intranet/spip.php ?rubrique27&url=.%2F

      A noter que si ce paramètre url est absent, on redirige par défaut dans l’espace privé (ce qui explique ce qui a été constaté).

    • Bingo :)
      Merci beaucoup pour vos reponses rapides et precises

    Répondre à ce message

  • 1

    Bonjour, j’essaie d’installer et de configurer cicas et je n’arrive pas. Je viens de comprendre qu’il me faut installer un serveur CAS. Peut-on me donner un lien vers une doc ? Est-ce que le plugin fonctionne avec lemonldap ?
    Merci

    Répondre à ce message

  • 1

    Bonjour,
    Le passage de 2.0.9 en 2.1.0 (et 2.1.x) a t-il des répercussions sur le fonctionnement du plug ?
    Avec une 110628, une migration 2.0.9 > 2.1.0 entraîne des comportements bizarres de mon côté (fonctionnement partiel) - désolé pour le vague de ma question ..

    • Equipement

      Bonjour,
      J’utilise la dernière version du plugin CAS sur SPIP 2.1.11 sans problèmes.

    Répondre à ce message

  • La version 1.32 du plugin apporte la compatibilité avec les versions 3.3.5 (et supérieures) des serveurs CAS.

    Répondre à ce message

  • La version 1.2 du plugin corrige un bug. La version 1.3 du plugin apporte l’utilisation de la version 1.2 du client phpCAS.

    Répondre à ce message

  • 8

    Bonjour,
    J’obtiens cette erreur dans la connexion CAS :

    phpCAS error : phpcas::forceauthentication() : one of the methods phpCAS::setCasServerCert(), phpCAS::setCasServerCACert() or phpCAS::setNoCasServerValidation() must be called. in /www/users/cormier/public_html/site/plugins/auto/cicas/inc/cicas_login.php on line 62

    Pouvez-vous m’aider ?
    Bien cordialement

    • Equipement

      Bonjour,

      Le message indique que l’une des 3 méthodes (setCasServerCert ou setCasServerCACert ou setNoCasServerValidation) doit être appelée avant « forceauthentication ».

      Le plugin CICAS tente d’appeler la 3e méthode (si elle existe) avant « forceauthentication ».
      Extrait du fichier cicas/inc/cicas_login.php :

      if (method_exists('phpCAS','setNoCasServerValidation')) {
      	phpCAS::setNoCasServerValidation();
      }
      
      // forcer l'authentication CAS
      phpCAS::forceAuthentication();

      Est-ce le serveur CAS utilise un certificat ?

      Cordialement

    • Equipement

      Une piste peut consister à remplacer, dans le fichier cicas/inc/cicas_login.php, le code suivant :

      if (method_exists('phpCAS','setNoCasServerValidation')) {
      	phpCAS::setNoCasServerValidation();
      }
      
      // forcer l'authentication CAS
      phpCAS::forceAuthentication();

      par :

      phpCAS::setNoCasServerValidation();
      
      // forcer l'authentication CAS
      phpCAS::forceAuthentication();

      Merci de m’indiquer si cela règle le problème.

    • Bonjour,
      Merci pour cette réponse rapide.
      Je me renseigne.
      Bien cordialement

    • Re,
      Je fais la transformation et vous donne le résultat.
      Cordialemetn

    • Cela semble fonctionner. A la déconnexion de SPIP l’erreur suivante est affichée :
      phpCAS error : phpcas::logout() : method phpCAS::logout($url)' is now deprecated, usephpCAS::logoutWithUrl($url)’ instead in /www/users/cormier/public_html/site/plugins/auto/cicas/action/logout.php on line 94

    • Equipement

      C’est curieux car le plugin CICAS tient compte de ce genre de situation.

      Une piste peut consister à remplacer, dans le fichier cicas/action/logout.php, le code suivant :

      if (method_exists('phpCAS','logoutWithUrl')) {
      	// Compatibilité avec les versions récentes de phpCAS
      	phpCAS::logoutWithUrl(urlencode($ci_url_retour));
      } else {
      	phpCAS::logout(urlencode($ci_url_retour));
      }

      par :

      phpCAS::logoutWithUrl(urlencode($ci_url_retour));

      Merci de m’indiquer si cela règle le problème.

    • Re,
      En tout cas, conjugué avec l’accès restreint, cela fonctionne très bien. Merci. Je fais la modification et vous dit quoi.
      Cordialement

    • Cela semble fonctionner. La déconnexion renvoie à une page du serveur CAS qui indique que l’utilisateur est déconnecté.
      Bien cordialement et merci pour cette réactivité instantanée.

    Répondre à ce message

  • 3

    Bonjour,

    j’ai légèrement modifié le plugin pour ajouter dans la configuration un champ permettant d’ajouter une durée d’expiration pour le cookie (en secondes).

    Si la valeur d’expiration n’est pas saisie, alors le cookie est valable jusqu’à la fin de la session SPIP (comme c’était le cas auparavant).

    Cordialement,

    • Bonjour,

      S’il s’agit du cookie de session de SPIP, le fait de vouloir raccourcir sa durée n’a pas de rapport avec l’authentification centralisée. En effet, cela constitue une demande d’évolution de SPIP, qui est indépendante du mode d’authentification (SPIP, LDAP, etc.).

    • En fait mon serveur CAS a une durée de validité du ticket sur x jours (par exemple 5 jours) .

      Cette modification de ce plugin permet aussi à SPIP de garder la connexion ouverte sur ces x jours.
      Je suis conscient que cela n’est pas très sécure mais elle permet de répondre à mon besoin.

    • Equipement

      Le plugin CICAS délègue à SPIP la construction de la session. Aussi c’est SPIP qui gère la durée de son cookie de session.

    Répondre à ce message

  • 6

    Re...

    Bon j’ai un peu avancé dans ma config...
    Plutôt pas mal, mais j’ai un soucis...
    J’ai l’impression que par défaut cicas renvois vers l’espace auteur, et du coup que l’on ne peut pas l’utiliser pour identifier des visiteurs...

    J’ai fais quelques essais, mais si vous avez une piste !

    Merci en tout cas...

    PS : pour mon problème de création de compte, j’ai finalement utilisé peuplement LDAP, il me suffira de le lancer une foius de temps en temps, et ça devrait faire l’affaire.... mais sinon, ça pourrait être une mise à jour intéressante.

    Eric

    • equipement

      Bonjour,

      Pour que phpCAS puisse rediriger sur la page en cours du site public, il faut que le lien permettant de s’authentifier (sans entrer dans l’espace privé) précise l’URL de la page en cours dans la variable ’url’.

      Exemple de lien :

      <a href="[(#URL_PAGE{login}|parametre_url{url,#SELF})]">Authentification</a>
    • OK, donc, si je met le lien qui arrive sur la page login public (normalement) :
      [(#URL_PAGElogin|parametre_urlurl,#SELF)]
      Elle se transforme d’elle même en :
      http://domaine.org/spip.php?page=login&url=./

      Si je clique dessus, j’ai normalement la boite de dialogue de connexion de spip, mais qui est du coup « usurpée » par mon cas.

      Mon CAS lui prend le dessus, et me propose son identification.... sauf quand dans l’URL, j’ai tous les / les & ? qui ont étés transformés... 5c’est le seul site qui me fait ça)...

      Du coup, quand l’identification est OK, il n’arrive pas à trouver la page correspondante, normal...

      Par contre....
      Je vais sur un site, je m’identifie par le cas, et dionc création de ticket.
      Je reviens sur SPIP, clic qur connexion, ça fonctionne !

    • equipement

      phpCAS encode le contenu de la variable ’url’ et c’est normal.

      Par exemple, si l’on se trouve sur la rubrique 1, le lien vers l’authentification est du type :

      http://monsite/spip.php?page=login&url=spip.php%3Frubrique1

      phpCAS encode alors le contenu de la variable url. L’adresse dans le navigateur, lorsque le formulaire d’authentification CAS apparaît, est du type :

      https://adresseduserveurcas/login?service=http%3A%2F%2Fmonsite%2Fspip.php%3Fpage%3Dlogin%26url%3Dspip.php%253Frubrique1
    • OK, cool de répondre rapidement.

      Coté connexion, j’ai réglé le problème en faisant une page qui se reload automatiquement le cas avec la bonne adresse.
      -  > connexion cas -> affichage de la page -> reload automatique sur connexion SPIP

      Comme ça, ça fonctionne...

      La déconnexion, j’ai pas encore trouvé... Je vais surement explorer le code pour voir si je ne peux pas rentré en dur mon adresse de manière à ce qu’il ne me ré-encode pas l’URL...

      Éric

    • equipement

      Le plugin « CICAS » fonctionne parfaitement depuis plusieurs mois sur plusieurs hébergeurs différents. Aussi, le problème est vraisemblalement ailleurs.

    • En effet, il fonctionne bien...

      Je ne sais pas pourquoi mon CAS n’est pas capable d’utiliser des adresses encodées...

      Bref, j’ai trouvé une solution pour la connexion, et la déconnexion, ça va pas mal quand même !

      Merci pour le boulot et les coups de main !

      Éric

    Répondre à ce message

  • equipement

    Bonjour,

    La version 1.1 du plugin CICAS, qui est jointe à cet article, offre un pipeline intitulé « cicas » qui est appelé si l’utilisateur d’est bien authentifié sur CAS mais que son compte n’a pas été trouvé dans SPIP.

    inc/cicas_login.php (ligne 108) :
        if (!isset($auteur['id_auteur'])) {
            // Envoyer au pipeline
            $auteur = pipeline('cicas',
                array(
                    'args' => $ci_cas_userid,
                    'data' => array()
                )
            );
        }   

    Aussi, vous pouvez créer un plugin, qui utilise le pipeline « cicas », et qui interroge LDAP et crée automatiquement, le cas échéant, une entrée dans la table spip_auteurs.

    Répondre à ce message

  • Salut,

    Ce plugin a une limite qui me semble vraiment dommage : si l’utilisateur n’existe pas... il n’est pas créé !
    Ça serait tellement bien...

    Ou alors faut-il l’utiliser conjointement avec un script qui remplis les users en fonction du ldap ???

    Éric

    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