SpidL2
Panoramica
Sull'IdP l'autenticazione SPID è offerta in parallelo alla solita autenticazione con credenziali unimore. Se un utente SPID è anche un utente unimore, le identità vengono riconciliate (fuse).
Se ad un certo codice fiscale SPID corrispondono più identità unimore (da esempio: dipendente ed ex-studente) apparirà un menu drop-down di scelta della username.
Se ad un certo codice fiscale SPID non corrisponde nessuna identità unimore, shibboleth-sp non riceve nessun attributo unimore.
Autorizzare solo gli utenti unimore
Cioé evitare l'accesso agli utenti SPID senza una identità unimore.
Controllo accesso sul virtual host apache2:
<Location /secure> AuthType shibboleth ShibRequestSetting requireSession 1 # verificare se ha senso ammettere gli accounts # piuttosto che ammettere exalumni e registered valutare se accettare tutti tout-court Require shib-attr ou dipendenti esterni studenti alum #exalumni registered accounts </Location>
Contrllo accesso nativo XML:
(dentro una sezione AccessControl) (gli utenti solo SPID non hanno ou) <OR> <comment> Permettere l'accesso a registrati ed exalumni vanifica il senso dell'autorizzazione <Rule require="ou">registered</Rule> <Rule require="ou">exalumni</Rule> ha senso autorizzare gli account? <Rule require="ou">accounts</Rule> </comment> <Rule require="ou">accounts</Rule>) <Rule require="ou">dipendenti</Rule> <Rule require="ou">esterni</Rule> <Rule require="ou">studenti</Rule> <Rule require="ou">alum</Rule> </OR>
Siccome gli utenti solo SPID giungono allo shibboleth-sp con attributi minimi, non hanno neppure lo ou.
Gestire gli utenti solo SPID
Casomai servisse accettare utenti SPID senza una identità unimore, bisogna modificare l'attribute-map.xml:
<Attribute name="urn:mace:unimore.it:attribute-def:unimore_taxpayer_number" id="unimoreTaxPayerNumber"/> <Attribute name="urn:mace:unimore.it:attribute-def:unimore_spid_email" id="unimoreSpidEmail"/> <Attribute name="urn:mace:unimore.it:attribute-def:unimore_spid_gn" id="unimoreSpidGn"/> <Attribute name="urn:mace:unimore.it:attribute-def:unimore_spid_sn" id="unimoreSpidSn"/> <Attribute name="urn:mace:unimore.it:attribute-def:unimore_spid_code" id="unimoreSpidCode"/> <Attribute name="urn:mace:unimore.it:attribute-def:unimore_spid_date_of_birth" id="unimoreSpidDateOfBirth"/>
Gli unici attributi presenti saranno il codice fiscale, la mail personale, la data di nascita, il codice univoco dell'IdP SPID (lo spidCode) ed il nome e cognome.
Richiedere solo SPID necessariamente
Aggiungere nella <Location> del virtual host:
<Location /secure> AuthType shibboleth ShibRequestSetting requireSession 1 ShibRequestSetting forceAuthn 1 ShibRequestSetting authnContextClassRef urn:oasis:names:tc:SAML:2.0:ac:classes:SecureRemotePassword ShibRequestSetting authnContextComparison minimum Require shib-attr ou dipendenti esterni studenti #Require valid-user </Location>
Se non è possibile usare apache2 bisogna ricorrre ad un ApplicationOverride:
<ApplicationOverride id="spid_only"> <Sessions lifetime="28800" timeout="3600" handlerSSL="true" cookieProps="; secure; HttpOnly"/> <SessionInitiator type="SAML2"> <samlp:AuthnRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" ID="foo" Version="2.0" IssueInstant="2012-01-01T00:00:00Z"> <samlp:RequestedAuthnContext Comparison="minimum" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"> <saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:SecureRemotePassword</saml:AuthnContextClassRef> </samlp:RequestedAuthnContext> </samlp:AuthnRequest> </SessionInitiator> </Session> </ApplicationOverride>
(non testato: meglio prima provarlo; manca il forceAuthn="true" senza il quale ci sono errori di sessione per gli utenti che hanno già una sessione con lo IdP ma non in SPID).
L'effetto di richiedere l'autenticazione con SecureRemotePassword è che lo IdP non mostra i campi username e password, ma solo il bottone 'login con SPID'.
Ad accesso effettuato, gli attributi dello shibboleth-sp:
Shib-Authentication-Method Shib-AuthnContext-Class
devono avere come valore: urn:oasis:names:tc:SAML:2.0:ac:classes:SecureRemotePassword