Dubbio sessione individuale

Buonasera,
dopo aver letto la documentazione relativa alla gestione della sessione “individuale” non mi è chiara la seguente frase:

"…in particolare le sessioni individuali possono:

  1. non essere instaturate
  2. essere chiuse anche nel corso di validità della sessione di autenticazione che le ha originate (ovvero prima di una eventuale richiesta di Single Logout o della scadenza del timeout associato alla sessione di autenticazione"

quale attributo contiene la data di scadenza della sessione di autenticazione,
Response->SubjectConfirmationData->notOnOrAfterField ?

Da quanto ho capito, se l’utente è gia loggato con spid livello 1 e vuole loggarsi con spid livello 2 non deve essere fatta di nuovo l’autenticazione: come può l’utente in quel caso rifare l’accesso con spid livello 2 senza dover passare dalla pagina di login del service provider?(e quindi senza aver fatto il logout?)

Grazie per l’aiuto.

Dalle regole tecniche:

La sessione stabilita a seguito di un evento di autenticazione relativo al livello SPID 1 è denominata, per chiarezza di esposizione, sessione di autenticazione per distinguerla dalla sessione che un fornitore di servizi può instaurare con l’utente al fine dell’erogazione di un particolare servizio richiesto, denominata a sua volta sessione individuale

In pratica la sessione individuale è la normale sessione della tua piattaforma. Per intenderci, quella che viene creata su un qualunque sito anche quando accedi con normale login e password.
La sua durata la definisce l’amministratore del sito.

No. Viene “saltata” solo la challenge di 1° livello (ovvero l’inserimento di login e password), ma si passa direttamente alla challenge di 2° livello (la richiesta dell’OTP). Questo solo nel caso che la sessione di autenticazione sia ancora attiva sull’IDP.

Gentilmente potresti descrivermi gli step funzionali per l’utente in questo caso? Quali sarebbero? Grazie.

Ipotizziamo:

  • Sito A, richiede identificazione con SPIDL1
  • Sito B, richiede identificazione con SPIDL2

L’utente X vuole accedere al sito A.
Dallo Spid Button presente sulla home del sito A seleziona il suo IdP
L’IdP presenta la pagina per la challenge di livello 1 (form per l’inserimento di login e password).
l’Utente X inserisce le sue credenziali di 1° livello, accetta l’invio dei dati al sito A e accede al sito A.

Prima che scada/venga distrutta la sessione di autenticazione presso l’IdP, l’utente X vuole accedere anche al sito B.
Dallo Spid Button presente sulla home del sito B seleziona il suo IdP
L’IdP presenta direttamente la pagina per la challenge di livello 2 (form per l’inserimento dell’OTP).
l’Utente X inserisce l’OTP, accetta l’invio dei dati al sito B e accede al sito B.

Ok. Grazie.
Nel caso in cui il sito del service provider offra più servizi, quindi Sito A e Sito B siano sempre dello stesso SP, in quel caso l’utente deve necessariamente rifare la selezione dello spid button e quindi rifare l’autenticazione?

Il fatto di ripresentare lo spid button semplifica lato sviluppatore, perché altrimenti dovresti tenere traccia di quale IdP l’utente ha utilizzato precedentemente.
Per il resto, se vuoi passare ad un livello SPID superiore, devi necessariamente generare una una AuthnRequest e quindi fare un’ulteriore autenticazione.

Buongiorno a tutti,
scusate se riesumo questo thread ma avrei una curiosità a riguardo di questo argomento :

Che succede nel caso inverso rispetto a cui quello di cui si stava parlando, ovvero se :
Sito A : richiede identificazione con SPIDL2 (o anche SPIDL3)

Sito B : richiede identificazione con SPIDL1

Prima che scada/venga distrutta la sessione di autenticazione presso l’IdP, l’utente X vuole accedere anche al sito B, quindi passando da uno SPIDL2 ad uno SPIDL1.

In questo caso in realtà l’utente non dovrebbe avere una sessione iniziata, quindi mi aspetto che debba ripetere una nuova login tramite le sue credenziali SPID creando così una sessione ed il relativo session index.

Pero sul nostro applicativo, che prevede il livello di autenticazione 1 (quindi con sessione), diverse response degli IDP ci arrivano SENZA il sessionIndex (manca proprio il campo nella response xml).
Io mi aspettavo che il sessionIndex in caso di SPIDL1 fosse SEMPRE valorizzato, quindi sono un po’ confuso.

Potreste aiutarmi a capire meglio questa caso d’uso?

Utente accede a sito A: Autenticazione a 2 fattori e NON viene creata alcuna sessione lato IdP.

Utente accede a sito B: In condizioni normali autenticazione ad un fattore e creazione di sessione lato IDP (se non già presente). In teoria (casi usualmente molto rari) " 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." (vedi regole tecniche).

Questo secondo (raro) caso, può essere desunto dalla Response/Assertion tramite l’elemento AuthnContext in cui è indicato il livello realmente utilizzato dall’IdP per l’identificazione dell’utente.

Qualora AuthnContext della Response/Assertion indichi il livello SPIDL1 e l’elemento AuthStatement non abbia l’attributo l’attributo SessionIndex, siamo in una situazione di errore.

I casi che segnalavi sono relativi sempre allo stesso IdP , oppure sono generalizzati?

Ciao Antonio,
grazie mille per la risposta.

Per ora mi è capitato solo con infocert ma sono pochissimi casi (sono solo 8, davvero trascurabili rispetto alla mole di richieste) e sono proprio il caso d’uso di cui hai fatto l’esempio, arriva la response con SpidL2 e sessionIndex null.
Da parte degli altri provider mi arriva sempre SpidL1.

Non mi aspettavo questi casi quindi volevo solo capire se mi fosse sfuggito qualcosa e dovevo gestirli diversamente o se fosse corretto dare errore, ma dalla tua risposta mi sembra sia corretto dare errore.

Grazie ancora per l’attenzione e buon fine settimana.