# yum install php-pear
# pecl install json
# cat > /etc/php.d/json.ini <
==== Configurazione ====
Documentazione: http://simplesamlphp.org/docs/stable/simplesamlphp-sp
=== **Scaricare i metadati dell'IdP nel file: ''metadata/saml20-idp-remote.php''** ===
== IdP di Produzione ==
# cd metadata/
# wget -O saml20-idp-remote.php https://idp.infn.it/metadata/idp.infn.it-idp_saml20-prod-metadata.simplesamlphp.txt
== IdP di Test ==
# cd metadata/
# wget -O saml20-idp-remote.php https://idp.infn.it/metadata/idp.infn.it-idp_saml20-test-metadata.simplesamlphp.txt
=== **Modificare il file: ''config/config.php''** ===
* Impostare la password per il frontend: '''auth.adminpassword'''
* Impostare la chiave di cifratura interna: '''secretsalt'''. Si può generare con il comando ''# head -c 2048 /dev/urandom | sha256sum''
* Impostare l'indirizzo e-mail dell'amministratore: '''technicalcontact_email'''
* Inserire il seguente codice dopo la riga: '''authproc.sp' => array(''
10 => array( 'class' => 'core:AttributeMap', 'removeurnprefix' ),
10 => array( 'class' => 'core:AttributeMap', 'oid2name' ),
* Commentare la linea: ''61 => array('class' => 'core:AttributeAdd'...''
=== **Creare i certificati per SAML:** ===
# mkdir /var/simplesamlphp/cert
# cd /var/simplesamlphp/cert/
# openssl req -new -x509 -newkey rsa:2048 -days 3652 -nodes -out saml.crt -keyout saml.key -subj /CN=`hostname -f`/OU=SAML-SP/
=== **Modificare il file: ''config/authsources.php''** ===
* Impostare l'IdP di riferimento:
* * **Produzione** '''idp' => '%%https://idp.infn.it/saml2/idp/metadata.php%%',''
* * **Testing** '''idp' => '%%https://idp.infn.it/testing/saml2/idp/metadata.php%%',''
* Aggiungere il seguente codice dopo la linea '''discoURL' => NULL,''
// Certificates
'privatekey' => 'saml.key',
'certificate' => 'saml.crt',
'redirect.sign' => TRUE,
'redirect.validate' => TRUE,
=== **Modificare il file ''/etc/httpd/conf.d/ssl.conf'':** ===
* Prima di '''', inserire:
Alias /simplesaml /var/simplesamlphp/www
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
=== **Far (ri)partire il web server** ===
# /etc/init.d/httpd start
A questo punto è necessario **inviare i metadati del vostro SP** (''https://SP-HOSTNAME.FQDN/simplesaml/module.php/saml/sp/metadata.php/default-sp'') tramite l'apposito modulo: [[https://idp.infn.it/utils/metadata-send.php]].
==== Codice PHP ====
All'interno del codice della vostra applicazione PHP potete inserire la chiamata alla libreria simpleSAMLphp.
Documentazione: http://simplesamlphp.org/docs/stable/simplesamlphp-sp-api
Un esempio semplice semplice:
isAuthenticated() && $_REQUEST['logout'] ) {
$as->logout();
}
if ( !$as->isAuthenticated() && $_REQUEST['login'] ) {
$as->requireAuth();
}
echo "Hello World!\n";
if ( $as->isAuthenticated() ) {
echo "You are authenticated
\n";
$attr = $as->getAttributes();
echo "";
print_r( $attr );
echo "
";
}
?>
LOGIN
LOGOUT
===== Shibboleth SP =====
In caso si voglia implementare l'autenticazione con un semplice modulo di apache è possibile usare il SP Shibboleth.
Documentazione: https://spaces.internet2.edu/display/SHIB2/Home
==== Installazione ====
Configurare il repository YUM:
# cat > /etc/yum.repos.d/shibboleth.repo <
* Nela caso di shibboleth-3.0-native-sp prima del tag ''