Simplesamlphp
Panoramica
SimpleSAMLphp è un progetto in php che implementa funzionalità simili a quelle di shibboleth sia come IdP che come SP. Può interloquire con Shibboleth.
Fonti
Installare SimpleSAMLphp versione 1.5 su Debian Lenny
- scaricare il tar.gz dal sito del progetto
- scompattarlo ad esempio in /opt (d'ora innanzi si suppone questo)
- cambiare la ownership della cartella con
sudo chown -R www-data:www-data /opts/implesamlphp-1.5.0/
- aggiungere nel virtual host corretto (ad esempio /etc/apache2/sites-enabled/default-ss) la regola:
Alias /simplesaml /opt/simplesamlphp-1.5.0/www
Configurazione
Le cartelle config e metadata sono duplicate in config-templates e metadata-templates, si possono quindi modificare i file in config e metadata senza rischi.
config/config.php
Modificare le righe:
- 'auth.adminpassword' => '123', con una passwd di propria scelta
- 'secretsalt' => 'default-secret-salt', con una stringa casuale a propria scelta (openssl rand -base64 -16, ad esempio)
- le righe dei contatti con la propria email
- aggiungere la riga:
'enable.saml20-idp' => false, 'enable.saml20-sp' => true,
nella sezione degli enable saml|shib
- se si vuole portare il logging da NOTICE a INFO.
metadata/saml20-sp-hosted.php
Creare in metadata/saml20-sp-hosted.php:
<?php $metadata = array( 'https://moodle-idem.unimore.it/simplesaml' => array( 'host' => 'moodle-idem.unimore.it', 'certificate' => 'moodle-idem.crt', 'privatekey' => 'moodle-idem.key', 'redirect.sign' => TRUE, 'redirect.validate' => TRUE, 'attributemap' => 'moodle', ) ); ?>
Senza righe bianche ne' prima ne' dopo.
- host è il FQDN dell'host
- certificate e privatekey devono essere copiate (o symlinked) in /opt/simplesamlphp-1.5.0/cert
- la chiave dell'array è l'equivalente dell'entityID per Shibboleth. Se questo host ha anche Shibboleth, scegliere un nome entityID diverso.
metadata/saml20-idp-remote.php
Per le prove, aggiungere prima degli altri IdP:
/* * omissis.unimore.it -> test */ $metadata = array(); $metadata['https://omissis.unimore.it/idp/shibboleth'] = array ( 'description' => 'omissis', 'name' => 'omissis.unimore.it', 'SingleSignOnService' => 'https://omissis.unimore.it/idp/profile/SAML2/Redirect/SSO', 'certFingerprint' => '733533D8F6CCBBAB0F6F432EE802469E06637112', );
attributemap/moodle.php
<?php $attributemap = array( 'urn:oid:0.9.2342.19200300.100.1.3' => 'mail', 'urn:oid:2.5.4.3' => 'cn', 'urn:oid:2.5.4.42' => 'givenName', 'urn:oid:2.5.4.4' => 'sn', 'urn:oid:1.3.6.1.4.1.5923.1.1.1.6' => 'eduPersonPrincipalName', 'urn:oid:1.3.6.1.4.1.5923.1.1.1.1' => 'eduPersonAffiliation', ); ?>
Un test
Connettersi a: https://tuo_server/simplesaml e fare un'occhiata alle sezioni configuration e federation. Per abilitare i sanity check, prima eseguire:
/opt/simplesamlphp-1.5.0$ sudo cp -v modules/sanitycheck/config-templates/config-sanitycheck.php config
Integrazione con Shibboleth
Copiare i metadati
I metadati simplesaml si scaricano dall'indirizzo: https://tuo_server/simplesaml/saml2/sp/metadata.php, oppure dalla pagina web /simplesaml -> federation SAML 2.0 SP Metadata.
O si aggiungono i metadati ai metadati della federazione o si fa una inclusione ad hoc nell'IdP. Chiedere a support.identity@unimore.it
Modificare il relying-party.xml del IdP
Fare aggiungere una sezione del tipo a support.identity@unimore.it
<RelyingParty id="https://tuo_server/simplesaml" provider="https://omissis.unimore.it/idp/shibboleth" defaultSigningCredentialRef="IdPCredential" > <ProfileConfiguration xsi:type="saml:SAML2SSOProfile" encryptNameIds="never" /> </RelyingParty>
Un altro test
Adesso dalla pagina: https://tuo_server/simplesaml si può provare la sezione autenticazione.