10 => array( 'class' => 'core:AttributeMap', 'removeurnprefix' ),
20 => array( 'class' => 'core:AttributeMap', 'oid2name' ),
=== Creare i certificati per SAML: ===
# 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: ''/var/simplesamlphp/config/authsources.php''
Impostare l'IdP di riferimento:
**Produzione**
'idp' => 'https://idp.infn.it/saml2/idp/metadata.php'
**Test**
'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,
'metadata.sign.enable' => true,
'sign.authnrequest' => true,
Modificare il file ''/etc/httpd/conf.d/ssl.conf'':
Prima di '''', inserire:
Alias /simplesaml /var/simplesamlphp/www
Options FollowSymLinks
AllowOverride None
Require all granted
Far (ri)partire il web server
# systemctl start httpd
A questo punto è necessario **inviare i metadati del vostro SP**, scaricandoli dalla url:
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 (la versione supportata ora è SP3).
Documentazione: https://shibboleth.atlassian.net/wiki/spaces/SP3/overview
==== Installazione ====
Configurare il repository YUM:
# curl -o /etc/yum.repos.d/shibboleth.repo https://shibboleth.net/cgi-bin/sp_repo.cgi?platform=CentOS_7
Installare:
# yum install epel-release
# yum install shibboleth httpd mod_ssl
==== Configurazione ====
Modificare il file: ''/etc/shibboleth/shibboleth2.xml''
* Sostituire tutte le occorrenze di ''sp.example.org'' con l'hostname del SP
* Sostituire tutte le occorrenze di ''signing="false"'' con ''signing="true"''
* Sostituire ''https://idp.example.org/idp/shibboleth'' con ''https://idp.infn.it/saml2/idp/metadata.php'' oppure con ''https://idp.infn.it/testing/saml2/idp/metadata.php'' per l'IdP di test.
* Impostare ''handlerSSL="true"'' e ''cookieProps="https"''
* Prima del tag ''
https://idp.infn.it/module.php/saml/idp/certs.php/idp.crt
=== IdP di TEST ===
https://idp.infn.it/testing/module.php/saml/idp/certs.php/idp.crt
==== Secondo Certificato dell'IdP (key-rollover)====
Se configurate un SP SAML durante un key-rollover, dovete installare anche il nuovo certificato dell'IdP che troverete in:
=== IdP di Produzione ===
https://idp.infn.it/module.php/saml/idp/certs.php/new_idp.crt
=== IdP di TEST ===
https://idp.infn.it/testing/module.php/saml/idp/certs.php/new_idp.crt
==== > IdP Issuer (Entity ID) ====
=== IdP di Produzionee ===
https://idp.infn.it/saml2/idp/metadata.php
=== IdP di TEST ===
https://idp.infn.it/testing/saml2/idp/metadata.php
==== > IDP Login URL ====
=== IdP di Produzionee ===
https://idp.infn.it/saml2/idp/SSOService.php
=== IdP di TEST ===
https://idp.infn.it/testing/saml2/idp/SSOService.php
==== > IDP binding ====
HTTP-Redirect
==== > User Login Setting ====
Questo è l'attributo usato per effettuare il mappino tra Identità Digitale autenticata via IdP ed utenza dell'applicazione. Se possibile usare l'attributo eduPersonPrincipalName (o EPPN) altrimenti utilizzare l'attributo username (o UID)