SpidL2

Da sia.
Versione del 25 gen 2023 alle 07:29 di Malvezzi (discussione | contributi) (→‎Richiedere solo SPID necessariamente)
(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)
Vai alla navigazione Vai alla ricerca

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