Questo sito utilizza i cookie per migliorare servizi ed esperienza dei lettori. Se decidi di continuare la navigazione consideriamo che accetti il loro uso. Per maggiori informazioni sull'uso dei cookies e su come eliminarli leggi l'informativa estesa

Metadati

I metadati della Federazione contengono le informazioni relative a tutti i Service Provider e Identity Provider partecipanti.

Tecniche di aggiornamento tra i partecipanti alla federazione

Ogni volta che un IdP o un SP viene inserito come nuovo partecipante alla Federazione IDEM, oppure un IdP o un SP già esistente modifica la propria configurazione (ad esempio cambia la versione di software di shibboleth), questa modifica deve essere recepita il più presto possibile da tutti gli altri partecipanti alla Federazione.

Come avviene l'allineamento della nuova configurazione?

  •  il partecipante che causa la modifica invia tempestivamente al Servizio IDEM la propria nuova configurazione (frammento del file Metadata)
  •  il servizio IDEM integra immediatamente la nuova configurazione (frammento del file Metadata) del partecipante nella configurazione complessiva della federazione (file Metadata)
  • gli altri partecipanti alla federazione hanno programmato un sistema automatico di ricezione (con cadenza al massimo giornaliera) della configurazione complessiva della federazione (file Metadata) e di apprendimento automatico della nuova configurazione della federazione sul proprio IdP o SP. In questo modo ogni altro partecipante alla federazione viene informato automaticamente di tutte le modifiche senza che il partecipante che ha provocato il cambiamento debba mettersi in contatto con ciascuno degli altri affinché la modifica venga recepita.

Casi particolari in cui un SP non recepisce automaticamente la configurazione complessiva della federazione

Il Servizio IDEM tiene memoria di quali sono gli SP che non recepiscono automaticamente le variazioni alla configurazione complessiva della federazione (file Metadata)
Per ognuno di questi SP, il Servizio IDEM diventa competente riguardo le procedure di ciascun SP.
[Gli altri partecipanti possono anche non essere a conoscenza di questi particolari, che possono diventare un peso per i singoli partecipanti e fonti di incomprensioni o fraintendimenti.]

Come avviene l'allineamento della nuova configurazione per gli SP che non hanno procedure automatiche di allineamento in base al file Metadata della federazione?

  • il partecipante che causa la modifica non deve fare nulla di più, ha infatti già inviato al Servizio IDEM la propria nuova configurazione (frammento del file Metadata)
  • il Servizio IDEM si mette in contatto con ciascun SP (quelli che non si allineano automaticamente) per comunicare, secondo i requisiti del SP, le modifiche alla configurazione dell'IdP che è cambiato. Il Servizio IDEM compie le opportune prove per verificare che la modifica sia stata recepita e fa da intermediario tra l'IdP modificato e gli SP che devono recepire il cambiamento.

Si raccomanda una gestione automatica dell'aggiornamento dei metadati per garantire una corretta comunicazione con tutti i nuovi Identity e Service Provider che si connetteranno alla Federazione.

 


Aggiornamento automatico dei metadati della federazione per Shibboleth Identity e Service Provider 2.x

Scaricare il certificato root di GARR CA

cd /tmp
curl -o GARR-CA.pem  https://ca.garr.it/mgt/CAcert.pem

Verificare i fingerprint del certificato scaricato

openssl x509 -in GARR-CA.pem -fingerprint -sha1 -noout
openssl x509 -in GARR-CA.pem -fingerprint -md5 -noout

comparandoli a quelli indicati in https://ca.garr.it/mgt/getCA.php

Installare il certificato root della GARR CA appena scaricato:

  • Idp 2.x
cp GARR-CA.pem /opt/shibboleth-idp/credentials
chmod 444 /opt/shibboleth-idp/credentials/GARR-CA.pem
  • Sp 2.x
cp GARR-CA.pem /etc/shibboleth 
chmod 444 /etc/shibboleth/GARR-CA.pem

Configurare lo scarico e la verifica della firma dei metadati

Configurazione di relying-party.xml per Idp 2.x

[...]

<metadataprovider id="URLMD-idem"> 
      xsi:type="FileBackedHTTPMetadataProvider"
      xmlns="urn:mace:shibboleth:2.0:metadata"
      metadataURL="https://www.idem.garr.it/docs/conf/signed-metadata.xml"
      backingFile="/opt/shibboleth-idp/metadata/signed-metadata.xml">
      
    <!-- altri attributi opzionali in -->     
    <!--https://wiki.shibboleth.net/confluence/display/SHIB2/IdPMetadataProvider -->
 <metadatafilter xsi:type="ChainingFilter"> 
    xmlns="urn:mace:shibboleth:2.0:metadata"
    <metadatafilter xsi:type="SignatureValidation"> 
      xmlns="urn:mace:shibboleth:2.0:metadata"
      trustEngineRef=" shibboleth.MetadataTrustEngine"
      requireSignedMetadata="true" 
    </metadatafilter>
 </metadatafilter>
</metadataprovider>

  [...]
  
<security:trustengine id="shibboleth.MetadataTrustEngine"> 
  xsi:type="security:StaticPKIXSignature"
  <validationinfo id="IDEMFederationCredentials"> 
    xsi:type="PKIXFilesystem" xmlns="urn:mace:shibboleth:2.0:security"
    <certificate>
       /opt/shibboleth-idp/credentials/GARR-CA.pem
    </certificate> 
  </validationinfo>
</security:trustengine>
  <metadataprovider id="URLMD-idem">
  </metadataprovider>

Configurazione di shibboleth2.xml per Sp 2.x



<!-- Chains together all your metadata sources. -->
<metadataprovider type="Chaining"></metadataprovider>
<!-- Chains together all your metadata sources. -->
<metadataprovider type="Chaining">
<!-- Example of remotely supplied batch of signed metadata. -->
  <metadataprovider type="XML">     
     uri="https://www.idem.garr.it/docs/conf/signed-metadata.xml"
     validate="true" backingFilePath="signed-metadata.xml"
     reloadInterval="7200"
    <metadatafilter type="Signature" verifyname="false">
      <trustengine type="StaticPKIX">
        <credentialresolver type="File">
          <certificate format="PEM">
            <path>/etc/shibboleth/GARR-CA.pem</path>
          </certificate>
        </credentialresolver>
      </trustengine>
    </metadatafilter>
  </metadataprovider>
</metadataprovider> 

Aggiornamento automatico dei metadati della federazione per Shibboleth Identity e Service Provider 1.3 (consigliato)

Per mantenere aggiornati i metadati della federazione è necessario scaricare ed installare il software xmlsectool

e scaricare i seguenti certificati:

Entrambi i file di certificato possono essere salvati nella directory:

/etc/ssl/certs

Per poter essere utilizzati in uno script da inserire nel cron giornaliero dell'Identity Provider o del Service Provider.

Il file signer_bundle.pem dovrà inoltre essere caricato all'interno del java keystore dell'Identity Provider con il seguente comando:

keytool -import -alias idem_signer -file signer_bundle.pem


Esempio di script per lo scarico, la verifica e l'installazione dei metadati

#!/bin/bash
SIG_METADATA=signed-metadata.xml
METADATA=idem-metadata.xml
SSL_CERTS_DIR=/etc/ssl/certs
METADATA_URL=https://www.idem.garr.it/docs/conf/$SIG_METADATA
XMLSECTOOL_DIR=/path/to/xmlsectool-1.1.1 #da personalizzare
HOME=/usr/local/shibboleth-idp/etc
LOG_FILE=$HOME/logs/metadatarefresh.log #da personalizzare
DIR_BK=$HOME/bk #da personalizzare
JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun #da personalizzare
export JAVA_HOME
cd $HOME
#save metadata
NOW=`date +%Y%m%d%H%M`
# logging
echo "============================================================" >>
$LOG_FILE
echo "======================= $NOW: $0 START" >> $LOG_FILE
echo "$NOW: BACKUP METADATI $METADATA" >> $LOG_FILE
echo "$NOW: BACKUP METADATI $SIG_METADATA" >> $LOG_FILE
#backup metadata
if [ -e $SIG_METADATA ]
then
        cp $SIG_METADATA $DIR_BK/$SIG_METADATA.`date '+%Y%m%d'`
fi
if [ -e $METADATA ]
then
        cp $METADATA $DIR_BK/$METADATA.`date '+%Y%m%d'`
fi
#delete previous metadata
if [ -e $SIG_METADATA ]
then
        rm -rf $SIG_METADATA
fi
# Refresh metadata
echo "$NOW: REFRESH METADATI" >> $LOG_FILE
wget --secure-protocol=auto --ca-certificate=$SSL_CERTS_DIR/scs-chain.pem \
$METADATA_URL >> $LOG_FILE 2>&1curl -o $SSL_CERTS_DIR/signer_bundle.pem --cacert $SSL_CERTS_DIR/tcs-chain.pem \
https://www.idem.garr.it/index.php/it/documenti/doc_download/45-signerbundle
sh $XMLSECTOOL_DIR/xmlsectool.sh --verifySignature --inFile $SIG_METADATA \
--certificate $SSL_CERTS_DIR/signer_bundle.pem --outFile $METADATA.$NOW
$LOG_FILE 2>&1
ret=$?
echo $ret
if [ "$ret" -ne "0" ] || [ ! -f "$METADATA.$NOW" ] ; then
sed -n -e "/^$NOW/"',$p' $LOG_FILE
echo "ERROR: refresh of $METADATA_URL failed ($ret)"
echo "$NOW: ERROR: refresh from $METADATA_URL failed ($ret)" >> $LOG_FILE
exit $ret
fi
    
# Compare new to existing. If same, delete new, if not replace existing
# and backup new.
if [ -r $METADATA.$NOW ] ; then
if cmp -s $METADATA.$NOW $METADATA ; then
rm -f $METADATA.$NOW
echo "$NOW: UNMODIFIED $METADATA" >> $LOG_FILE
else
echo "$NOW: NEW $METADATA"
METADATA_BASENAME=`basename $METADATA`
mv -f $METADATA.$NOW $METADATA
echo "$NOW: new $METADATA installed" >> $LOG_FILE
fi
fi
# logging
echo "===================== $NOW: $0 DONE." >> $LOG_FILE
exit

Aggiornamento automatico dei metadati della federazione per Shibboleth Service Provider 1.3 (obsoleto, sconsigliato)

Per mantenere aggiornati i metadati della federazione è necessario scaricare i seguenti certificati:

Entrambi i file di certificato possono essere salvati nella directory:

/etc/ssl/certs

per poter essere utilizzati in uno script da inserire nel cron giornaliero del Service Provider.


Esempio di script per lo scarico, la verifica e l'installazione dei metadati

#!/bin/bash
SIG_METADATA=signed-metadata.xml
METADATA=idem-metadata.xml
cd /root
if [ -e $SIG_METADATA ]
then
        rm -rf $SIG_METADATA
fi
wget --secure-protocol=auto --ca-certificate=/etc/ssl/certs/scs-bundle.pem \
https://www.idem.garr.it/docs/conf/signed-metadata.xml 2> /dev/null
siterefresh --url file:///root/$SIG_METADATA \
--out /etc/shibboleth/$METADATA --cert /etc/ssl/certs/signer_bundle.pem

Aggiornamento automatico dei metadati della federazione per Shibboleth Identity Provider 1.3(obsoleto, sconsigliato)

Per mantenere aggiornati i metadati della federazione è necessario scaricare i seguenti certificati:

Entrambi i file di certificato possono essere salvati nella directory:

/etc/ssl/certs

per poter essere utilizzati in uno script da inserire nel cron giornaliero dell' Identity Provider.

Il file signer_bundle.pem dovrà inoltre essere caricato all'interno del java keystore con il seguente comando:

keytool -import -alias idem_signer -file signer_bundle.pem


Esempio di script per lo scarico, la verifica e l'installazione dei metadati

#!/bin/bash
#
# personalizzare le variabili
# JAVA_HOME=
# IDP_HOME=
# SSL_CERTS_DIR=
#
# creare le directory
# $DP_HOME/ScriptRefresh
# $DP_HOME/ScriptRefresh/Metadata_bk
#
##
JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun
export JAVA_HOME
IDP_HOME=/usr/local/shibboleth-idp
export IDP_HOME
SSL_CERTS_DIR=/etc/ssl/certs
DIR_SHIBD=$IDP_HOME/etc
DIR_SHIBD_SCRIPT=$DIR_SHIBD/ScriptRefresh
DIR_SHIBD_BK=$DIR_SHIBD_SCRIPT/Metadata_bk
SIG_METADATA=signed-metadata.xml
METADATA=idem-metadata.xml
METADATA_URL=https://www.idem.garr.it/docs/conf/$SIG_METADATA
METADATA_FILE=$DIR_SHIBD/$METADATA
LOG_FILE=$IDP_HOME/logs/metadatarefresh.log
#save metadata
NOW=`date +%Y%m%d%H%M`
# logging
echo "============================================================" >> $LOG_FILE
echo "======================= $NOW: $0 START" >> $LOG_FILE
echo "i$NOW: BACKUP METADATI $METADATA" >> $LOG_FILE
echo "i$NOW: BACKUP METADATI $SIG_METADATA" >> $LOG_FILE
cd $DIR_SHIBD
cp $SIG_METADATA $DIR_SHIBD_BK/$SIG_METADATA.`date '+%Y%m%d'`
cp $METADATA $DIR_SHIBD_BK/$METADATA.`date '+%Y%m%d'`
if [ -e $SIG_METADATA ]
then
rm -rf $SIG_METADATA*
fi
# Refresh metadata
echo "i$NOW: REFRESH METADATI" >> $LOG_FILE
wget --secure-protocol=auto --ca-certificate=$SSL_CERTS_DIR/scs-bundle.pem \
$METADATA_URL >> $LOG_FILE 2>&1
$IDP_HOME/bin/metadatatool -i file:///$DIR_SHIBD/$SIG_METADATA -k $HOME/.keystore \
-a idem_signer -o $METADATA_FILE.$NOW >> $LOG_FILE 2>&1
ret=$?
echo $ret
if [ "$ret" -ne "0" ] || [ ! -f "$METADATA_FILE.$NOW" ] ; then
sed -n -e "/^$NOW/"',$p' $LOG_FILE
echo "ERROR: refresh of $METADATA_URL failed ($ret)"
echo "$NOW: ERROR: refresh from $METADATA_URL failed ($ret)" >> $LOG_FILE
exit $ret
fi
# Compare new to existing. If same, delete new, if not replace existing
# and backup new.
if [ -r $METADATA_FILE.$NOW ] ; then
if cmp -s $METADATA_FILE.$NOW $METADATA_FILE ; then
rm -f $METADATA_FILE.$NOW
echo "$NOW: UNMODIFIED $METADATA_FILE" >> $LOG_FILE
else
echo "$NOW: NEW $METADATA_FILE"
METADATA_BASENAME=`basename $METADATA_FILE`
#cp -p $METADATA_FILE $IDP_ETC/backup/$METADATA_BASENAME.$NOW
mv -f $METADATA_FILE.$NOW $METADATA_FILE
echo "$NOW: new $METADATA_FILE installed" >> $LOG_FILE
fi
fi
# logging
echo "===================== $NOW: $0 DONE." >> $LOG_FILE
exit 

Tutti articoli tecnici