Connexion via Shibboleth

Présentation de Shibboleth

Shibboleth est un mécanisme de fédération d'identités, développé par le consortium Internet2, qui regroupe 207 universités et centres de recherches.

Maarch Courrier offre la possibilité de passer par Shibboleth pour gérer l'authentification.

Voici une description des services de la suite logicielle Shibboleth :

https://www.projet-plume.org/fiche/shibboleth

Installation du Service Provider Shibboleth sur centos

Utiliser l'installation RPM

https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPLinuxRPMInstall

Installation des dépendances

    yum install mod_ssl

    wget http://download.opensuse.org/repositories/security://shibboleth/CentOS_7/x86_64/libcurl-openssl-7.61.0-1.1.x86_64.rpm
    rpm -Uvh libcurl-openssl-7.61.0-1.1.x86_64.rpm

    wget http://download.opensuse.org/repositories/security://shibboleth/CentOS_7/x86_64/liblog4shib2-2.0.0-3.1.x86_64.rpm
    rpm -Uvh liblog4shib2-2.0.0-3.1.x86_64.rpm

    yum install libmemcached

    wget https://rpmfind.net/linux/centos/7.5.1804/os/x86_64/Packages/libtool-ltdl-2.4.2-22.el7_3.x86_64.rpm
    rpm -Uvh libtool-ltdl-2.4.2-22.el7_3.x86_64.rpm 

    wget https://rpmfind.net/linux/centos/7.5.1804/os/x86_64/Packages/unixODBC-2.3.1-11.el7.x86_64.rpm
    rpm -Uvh unixODBC-2.3.1-11.el7.x86_64.rpm

    wget http://download.opensuse.org/repositories/security://shibboleth/CentOS_7/x86_64/libxerces-c-3_2-3.2.1-1.1.x86_64.rpm
    rpm -Uvh libxerces-c-3_2-3.2.1-1.1.x86_64.rpm

    wget http://download.opensuse.org/repositories/security://shibboleth/CentOS_7/x86_64/libxml-security-c20-2.0.1-3.1.x86_64.rpm
    rpm -Uvh libxml-security-c20-2.0.1-3.1.x86_64.rpm

    wget http://download.opensuse.org/repositories/security://shibboleth/CentOS_7/x86_64/libxmltooling8-3.0.2-3.1.x86_64.rpm
    rpm -Uvh libxmltooling8-3.0.2-3.1.x86_64.rpm 

    wget http://download.opensuse.org/repositories/security://shibboleth/CentOS_7/x86_64/libsaml10-3.0.0-1.1.x86_64.rpm
    rpm -Uvh libsaml10-3.0.0-1.1.x86_64.rpm

    wget http://download.opensuse.org/repositories/security://shibboleth/CentOS_7/x86_64/opensaml-schemas-3.0.0-1.1.x86_64.rpm
    rpm -Uvh opensaml-schemas-3.0.0-1.1.x86_64.rpm

    wget http://download.opensuse.org/repositories/security://shibboleth/CentOS_7/x86_64/xmltooling-schemas-3.0.2-3.1.x86_64.rpm
    rpm -Uvh xmltooling-schemas-3.0.2-3.1.x86_64.rpm

### Installing shibboleth 3

    wget http://download.opensuse.org/repositories/security://shibboleth/CentOS_7/x86_64/shibboleth-3.0.2-1.1.x86_64.rpm
    rpm -Uvh shibboleth-3.0.2-1.1.x86_64.rpm

Après l'installation

Les fichiers de configuration de Shibboleth seront placés dans /etc/shibboleth/ et la configuration Apache requise dans /etc/httpd/conf.d/shib.conf shibd sera installé dans /usr/sbin et peut être géré à l'aide du service et chkconfig (sur les plates-formes System V) ou avec systemctl (sur les plates-formes systemd, certaines informations supplémentaires sont disponibles).

Une version appropriée de mod_shib et d'autres modules pluggables sera installée dans /usr/lib64/shibboleth.

Configuration Basique

Dans httpd.conf, l'utilisation de la fonctionnalité RequestMap n'est pas recommandée avec Apache, mais son utilisation nécessite que la directive UseCanonicalName soit définie. Assurez-vous que la directive ServerName est correctement définie et qu’Apache est en cours de démarrage avec SSL activé. Redémarrez Apache.

/usr/sbin/shibd doit être démarré et exécuté indépendamment pour traiter les demandes. Le démon doit être chargé et surveillé avec tous les autres services principaux.

/sbin/service shibd start

Par défaut, le module Shibboleth est configuré pour enregistrer les informations de la part d’Apache dans /var/log/shibboleth-www/native.log. shibd crée ses propres journaux séparés dans/var/log/shibboleth

Démarrage rapide

Vérification de la configuration de shibboleth

shibd -t

Le plus Important est que la dernière ligne de la sortie soit :

"overall configuration is loadable, check console for non-fatal problems"

Configurer apache avec https

voir l'exemple :

https://www.digitalocean.com/community/tutorials/how-to-create-an-ssl-certificate-on-apache-for-centos-7

Tutoriel pour shibboliser votre application Maarch Courrier

suivre à partir du chapitre 2.3 : https://services.renater.fr/federation/docs/installation/sp_juin2012

Exemple à partir du service d'intégration Shibboleth de Maarch Courrier

Configuration d'Apache

    nano /etc/httpd/conf.d/shib.conf
    # https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPApacheConfig

    # RPM installations on platforms with a conf.d directory will
    # result in this file being copied into that directory for you
    # and preserved across upgrades.

    # For non-RPM installs, you should copy the relevant contents of
    # this file to a configuration location you control.

    #
    # Load the Shibboleth module.
    #
    LoadModule mod_shib /usr/lib64/shibboleth/mod_shib_24.so

    #
    # Turn this on to support "require valid-user" rules from other
    # mod_authn_* modules, and use "require shib-session" for anonymous
    # session-based authorization in mod_shib.
    #
    ShibCompatValidUser Off

    #
    # Ensures handler will be accessible.
    #
    <Location /Shibboleth.sso>
    AuthType None
    Require all granted
    </Location>

    #
    # Used for example style sheet in error templates.
    #
    <IfModule mod_alias.c>
    <Location /shibboleth-sp>
        AuthType None
        Require all granted
    </Location>
    Alias /shibboleth-sp/main.css /usr/share/shibboleth/main.css
    </IfModule>

    #
    # Configure the module for content.
    #
    # You MUST enable AuthType shibboleth for the module to process
    # any requests, and there MUST be a require command as well. To
    # enable Shibboleth but not specify any session/access requirements
    # use "require shibboleth".
    #

    <Directory "/var/www/html/MaarchCourrier/cs_cd65/">
        AuthType shibboleth
        ShibRequestSetting requireSession 1
        ShibRequestSetting applicationId default
        require shib-session

        AllowOverride All
        Options -Indexes
        Options FollowSymLinks Includes ExecCGI
        <FilesMatch ".*">
            Order deny,allow
            Deny from all
        </FilesMatch>
        # Root to allow index.php
        <FilesMatch "^$">
            Order allow,deny
            Allow from all
        </FilesMatch>
        # Core root
        <FilesMatch "^(index|ws_server|static|merged_js|merged_css|reopen|applet_launcher|applet_controller|log)\.php$">
            Order allow,deny
            Allow from all
        </FilesMatch>
        # App static files
        <FilesMatch "\.(css|js|jpg|jpeg|png|gif|ttf|woff|woff2)$">
            Order allow,deny
            Allow from all
        </FilesMatch>
        # App tools files
        <FilesMatch "\.(htm|html|jar|jnlp)$">
            Order allow,deny
            Allow from all
        </FilesMatch>
    </Directory>

    # Activation globale de l'authentification Shibboleth pour toutes les routes
    # a ne pas activer pour l'édition de doc
    #  <Location />
    #    AuthType shibboleth
    #    Require shibboleth
    #  </Location>

    # Pour l'édition de documents, pas d'authent shibboleth
    <Directory /var/www/html/MaarchCourrier/modules/content_management/dist>
        Satisfy Any
        Allow from all
        AuthType None
        Require all granted
    </Directory>
    <Location /MaarchCourrier/cs_cd65/rest/>
        Satisfy Any
        Allow from all
        AuthType None
        Require all granted
    </Location>

    SetEnv MAARCH_TMP_DIR "/tmp"

    <Directory /tmp/*.jnlp>
        Satisfy Any
        Allow from all
        AuthType None
        Require all granted
    </Directory>

Configuration de Shibboleth

Ouvrir /etc/shibboleth/shibboleth2.xml

    <SPConfig xmlns="urn:mace:shibboleth:3.0:native:sp:config"
    xmlns:conf="urn:mace:shibboleth:3.0:native:sp:config"
    clockSkew="180">

        <OutOfProcess tranLogFormat="%u|%s|%IDP|%i|%ac|%t|%attr|%n|%b|%E|%S|%SS|%L|%UA|%a" />

        <ApplicationDefaults entityID="https://92.243.8.134"
            REMOTE_USER="eppn subject-id pairwise-id persistent-id"
        cipherSuites="DEFAULT:!EXP:!LOW:!aNULL:!eNULL:!DES:!IDEA:!SEED:!RC4:!3DES:!kRSA:!SSLv2:!SSLv3:!TLSv1:!TLSv1.1">

            <Sessions lifetime="28800" timeout="3600" relayState="ss:mem"
                    checkAddress="false" handlerSSL="true" cookieProps="https">

                <SSO discoveryProtocol="SAMLDS" discoveryURL="https://discovery.renater.fr/test">
                SAML2 SAML1
            </SSO>

                <Logout>SAML2 Local</Logout>

                <LogoutInitiator type="Admin" Location="/Logout/Admin" acl="127.0.0.1 ::1" />

                <Handler type="MetadataGenerator" Location="/Metadata" signing="false"/>

                <Handler type="Status" Location="/Status" acl="127.0.0.1 ::1"/>

                <Handler type="Session" Location="/Session" showAttributeValues="false"/>

                <Handler type="DiscoveryFeed" Location="/DiscoFeed"/>
            </Sessions>

            <Errors supportContact="root@localhost"
                    metadata="metadataError_fr.html"
                    access="accessError_fr.html"
                    ssl="sslError_fr.html"
                    localLogout="localLogout_fr.html"
                    globalLogout="globalLogout_fr.html"
                    logoLocation="/shibboleth-sp/logo.jpg"
                styleSheet="/shibboleth-sp/main.css"/>

            <!-- Meta-données de la fédération de Test RENATER -->
            <MetadataProvider type="XML" url="https://metadata.federation.renater.fr/test/preview/preview-all-renater-test-metadata.xml"
                backingFilePath="preview-all-renater-test-metadata.xml" reloadInterval="7200">
                <MetadataFilter type="Signature" certificate="renater-metadata-signing-cert-2016.pem"/>
            </MetadataProvider>

            <AttributeExtractor type="XML" validate="true" reloadChanges="false" path="attribute-map.xml"/>

            <AttributeFilter type="XML" validate="true" path="attribute-policy.xml"/>

            <CredentialResolver type="File" use="signing"
                    key="sp-signing-key.pem" certificate="sp-signing-cert.pem"/>
            <CredentialResolver type="File" use="encryption"
                    key="sp-encrypt-key.pem" certificate="sp-encrypt-cert.pem"/>

            <CredentialResolver type="File" key="sp-key.pem" certificate="sp-cert.pem" />

            </ApplicationDefaults>

        <SecurityPolicyProvider type="XML" validate="true" path="security-policy.xml"/>

        <ProtocolProvider type="XML" validate="true" reloadChanges="false" path="protocols.xml"/>

    </SPConfig>

Configuration de Maarch Courrier pour activer le mode d'authentification Shibboleth

Copier le fichier config/login_method.xml dans votre custom avec la même arborescence, et modifiez-le comme ceci.

    <METHOD>
        <ID>sso</ID>
        <ENABLED>true</ENABLED>
    </METHOD>

Il faut également configurer l'en-tête dans l'administration. Voir la configuration.

results matching ""

    No results matching ""