Richiesta di accesso con il massimo livello di SPID posseduto

Buongiorno,
l’amministrazione per cui presto servizio sta per pubblicare su internet un portale per l’accesso ad alcuni servizi per i cittadini.

L’accesso al portale sarà possibile solo tramite SPID.

Poiché i vari servizi pubblicati sul portale sono accessibili con vari livelli di autenticazione (anche in dipendenza della fascia di utenti a cui i servizi sono rivolti), per evitare che gli utenti che hanno effettuato l’accesso, ad esempio, con il Livello 1 debbano riautenticarsi per poter accedere ad un servizio che prevede l’accesso a Livello 2, ci chiedevamo se ci fosse la possibilità di far accedere il cittadino con il massimo livello di accesso SPID posseduto.

Analizzando le regole tecniche avremmo individuato la soluzione che potrebbe soddisfare la nostra esigenza.

Si potrebbe utilizzare l’attributo “Comparison” previsto dall’elemento <RequestedAuthnContext>.
Facendo qualche ricerca sul web, però, ci sono interpretazioni diverse riguardo al comportamento dei vari valori dell’attributo.
Secondo alcune interpretazioni, per ottenere quanto da noi desiderato, bisognerebbe utilizzare “Comparison=Maximum” mentre secondo altre interpretazioni bisognerebbe utilizzare “Comparison=Better”.

Secondo la vostra esperienza, qual è il metodo corretto per richiedere, all’IDP prescelto, l’accesso col massimo livello posseduto dal cittadino?

Tutti gli IDP implementano i meccanismi di autenticazione che prevedono l’attributo “Comparison” in maniera omogenea o potrebbero essere implementati in maniera differente da ogni IDP?

P.S.
In una precedente versione (la 0.1) delle Regole Tecniche, veniva riportato il seguente esempio (che, però, non è più presente sull’ultima versione):

L’esempio seguente di <RequestedAuthnContext> fa riferimento a una “authentication context class” di tipo “SpidL3” o in subordine a una di tipo “SpidL2” .

<samlp:RequestedAuthnContext Comparison=“exact”>
saml:AuthnContextClassRef
urn:oasis:names:tc:SAML:2.0:ac:classes:SpidL3
</saml:AuthnContextClassRef>
saml:AuthnContextClassRef
urn:oasis:names:tc:SAML:2.0:ac:classes:SpidL2
</saml:AuthnContextClassRef>
</samlp:RequestedAuthnContext>

Se abbiamo interpretato bene l’esempio, l’IDP dovrebbe richiedere l’accesso con il livello 3 o, se non posseduto (in subordine), con il livello 2.
L’interpretazione è corretta?
E nel caso lo fosse, è una soluzione utilizzabile?

Grazie

Buongiorno @pasquale.pirri,

da specifiche SAML, il comparison better permette di eseguire l’autenticazione ad un livello più forte di quello indicato:

If Comparison is set to “better”, then the resulting authentication context in the authentication statement MUST be stronger (as deemed by the responder) than any one of the authentication contexts specified.

ma non prende in considerazione il livello più alto a disposizione per l’utente.

Se risulta necessario permettere all’utente di effettuare l’autenticazione con il livello più alto a sua disposizione, la soluzione è offrire / guidare la scelta del livello sul Service Provider stesso.

Inoltre, le regole tecniche SPID stabiliscono che:

L’Identity Provider ha facoltà di utilizzare per l’autenticazione un livello SPID più alto
rispetto a quelli risultanti dall’indicazione del richiedente mediante l’attributo Comparison. Tale scelta non deve comportare un esito negativo della richiesta.

Quindi è preferibile, in ogni caso, utilizzare il Comparison minimum.

Cordiali saluti,
Michele D’Amico
Collaboratore Agenzia per l’Italia Digitale

Buongiorno @damikael,
grazie per la risposta.

Analizziamo però cosa statuiscono le specifiche SAML per il comparison maximum:

If Comparison is set to “maximum”, then the resulting authentication context in the authentication statement must be as strong as possible (as deemed by the responder) without exceeding the strength of at least one of the authentication contexts specified.

Se non interpreto male, questo vuol dire che, impostando il parametro Comparison = “Maximum” ed il livello di autenticazione ad L3, l’IdP dovrebbe utilizzare il più alto livello posseduto (the authentication statement must be as strong as possible), purché non eccedente il Livello L3.

Secondo voi (e mi riferisco anche agli IdP che dovessero frequentare il forum), questa impostazione potrebbe essere la soluzione alla nostra esigenza?

Cordialmente,
Pasquale Pirri