External Resources

http://shibboleth.net/
https://wiki.shibboleth.net
https://spazivirtuali.unibo.it/cesia 

Installazione modulo shibboleth per apache

  1. installare il pacchetto libapache2-mod-shib2 e dipendenze.
    • sudo apt-get install libapache2-mod-shib2

Configurazione modulo shibboleth per apache

  1. Copiare i file shibboleth2.xml, attribute-policy.xml e attribute-map.xml forniti dal Cesia, sostituendo quelli di default.
    • sudo mv /etc/shibboleth/attribute-policy.xml /etc/shibboleth/attribute-policy.xml.bkp
      sudo mv /etc/shibboleth/attribute-map.xml /etc/shibboleth/attribute-map.xml.bkp
      sudo mv /etc/shibboleth/shibboleth2.xml /etc/shibboleth/shibboleth2.xml.bkp
      sudo mv attribute-map.xml /etc/shibboleth/attribute-map.xml
      sudo mv attribute-policy.xml /etc/shibboleth/attribute-policy.xml
      sudo cp shibboleth2.test.apice.xml  /etc/shibboleth/shibboleth2.xml
       
  2. creare una coppia certificato-chiave col comando shib-keygen.
    • sudo shib-keygen –y 5 -h test.apice..unibo.it
    • opzione “-y”: durata in anni del certificato. “-h”: Common Name

      [sudo] password for gestore:
      Generating a 2048 bit RSA private key
      ........................................+++
      ..............................................+++
      writing new private key to '/etc/shibboleth/sp-key.pem'
      ---
    • vengono generati due file, certificato e chiave privata
      1. /etc/shibboleth/sp-cert.pem
      2. /etc/shibboleth/sp-key.pem
  3. Modificare il file  /etc/shibboleth/shibboleth2.xml
    • Modificare RequestMapper, .
      1. Modificare l’elemento Host, server (o del virtual host su cui è ospitata l’applicazione). 
      2. Modificare l’elemento Path, directory in cui è contenuta l’applicazione sul server.
        <RequestMapper type="Native">
               <RequestMap applicationId="default">
                   <Host name="test.apice.unibo.it">
                       <Path name="/xwiki/bin/view/Main/Login" authType="shibboleth" requireSession="true"/>
         
    • Modificare ApplicationDefaults,
      1.  Modificare l’attributo entityID: identificativo univoco dell’applicazione all’interno del sistema federato
        • l’entityID deve coincidere con l’URL del punto da cui l’applicazione richiede l’autenticazione
      2. Modificare l’attributo homeUrl: indirizzo principale dell’applicazione.
        <ApplicationDefaults id="default" policyId="default" REMOTE_USER="idAnagraficaUnica eppn persistent-id" **entityID="https://test.apice.unibo.it/xwiki/bin/loginsubmit/XWiki/"** **homeURL="http://test.apice.unibo.it"**>
         
         
    • Modificare l’elemento Notify dentro il file di configurazione di Shibboleth con il percorso della pagina di logout locale (logout.php).

File di configurazione apache

<Location /risorsaDaProteggere>
   AuthType shibboleth
   ShibRequireSession On
   ShibUseHeaders On
   require valid-user
   UseCanonicalName On
</Location>

Feedback per logout

  • immagine greencheck.gif in una cartella NON protetta da autenticazione,
    sudo mkdir /var/www/img
    gestore@i2-ve029:~/SSO$ sudo cp greencheck.gif /var/www/img
  • la pagina di lougout deve restituire l’indirizzo dell’immagine, ovvero fare un redirect per dare sull'IDP il feedback visivo dell'avvenuto logout
    header( 'test.apice.unibo.it/img/greencheck.gif' ) ;

Integrazione portale xWiki

XWiki  ha una gestione delle sessioni. Si deve integrare il login ed il logout con l'apertura e la chiusura della sessione applicativa dell’utente con la logica del CMS. 

Stoppare il servizioApache
Stoppare il servizio shibd
Riavviare il servizio shibd.
Riavviare il servizio Apache

Passaggio a SSO ambiente di produzione

  1. file di configurazione apache:  /etc/apache2/sites-available/new_apice
    • aggiungere  <Location /risorsaDaProteggere>  
  2. creare una coppia di certificato-chiave col comando shib-keygen.
    sudo shib-keygen y 5 -h apice.unibo.it
    The files /etc/shibboleth/sp-key.pem and/or /etc/shibboleth/sp-cert.pem already exist!
    Use -f option to force recreation of keypair.
    sudo shib-keygen -f y 5 -h  apice.unibo.it
    Generating a 2048 bit RSA private key
    .....+++
    ...+++
    writing new private key to '/etc/shibboleth/sp-key.pem'
  3. file di configurazione di shibboleth: /etc/shibboleth/shibboleth2.xml 
    • cambiare https://idptest.unibo.it con https://idp.unibo.it  (diff merge trova 2 istanze)
      1. <SessionInitiator .. 
      2. <MetadataProvider ..
    • Modificare RequestMapper
      1. Modificare l’elemento Host: server o  virtual host su cui è ospitata l’applicazione.
      2. Modificare l’elemento Path: directory in cui è contenuta l’applicazione sul server.
        <RequestMap applicationId="default">
                   <Host name="apice.unibo.it">
                       <Path name="/xwiki/bin/view/Main/Login" authType="shibboleth"
                       requireSession="true"/>
                   </Host>
               </RequestMap>

        <Notify Channel="front" Location="https://apice.unibo.it/xwiki/bin/view/Main/Logout" />


         
    • Modificare ApplicationDefaults
      1. Modificare l’attributo entityID: URL del punto da cui l’applicazione richiede l’autenticazione
      2. Modificare l’attributo homeUrl: indirizzo principale dell’applicazione.
                   
        <ApplicationDefaults id="default" policyId="default"
        REMOTE_USER="idAnagraficaUnica eppn persistent-id"
        entityID="https://apice.unibo.it/xwiki/bin/view/Main/Login"
        homeURL="http://apice.unibo.it">
        </   > 
    • Modificare l’elemento Notify: URL della pagina di logout locale
      <Notify Channel="front" Location="https://apice.unibo.it/xwiki/bin/view/Main/Logout" />
      </   > 
  4. Riavviare i servizi:
    • Stoppare il servizioApache
    • Stoppare il servizio shibd
    • Riavviare il servizio shibd. 
    • Riavviare il servizio Apache
      >sudo service shibd stop
      Stopping Shibboleth 2 daemon: shibd.
      >sudo service apache2 stop
      * Stopping web server apache2
       ... waiting ..   ...done.
      >sudo service shibd start
      Starting Shibboleth 2 daemon: shibd.
      >sudo service apache2 start
      * Starting web server apache2
         ...done.