5. Authorization Endpoint (Authentication Request)¶
Per avviare il processo di autenticazione, il RP manda l’utente all’Authorization Endpoint dell’OP selezionato passando in POST o GET una richiesta in formato JWT.
Tale richiesta DEVE essere firmata e cifrata, secondo le modalità definite dall’Agenzia per l’Italia Digitale.
Esempio (chiamata HTTP):
request=eyJhbGciOiJSUzI1NiIs
ImtpZCI6ImsyYmRjIn0.ew0KICJpc3MiOiAiczZCaGRSa3F0MyIsDQogImF1ZCI6ICJod
HRwczovL3NlcnZlci5leGFtcGxlLmNvbSIsDQogInJlc3BvbnNlX3R5cGUiOiAiY29kZS
BpZF90b2tlbiIsDQogImNsaWVudF9pZCI6ICJzNkJoZFJrcXQzIiwNCiAicmVkaXJlY3R
fdXJpIjogImh0dHBzOi8vY2xpZW50LmV4YW1wbGUub3JnL2NiIiwNCiAic2NvcGUiOiAi
b3BlbmlkIiwNCiAic3RhdGUiOiAiYWYwaWZqc2xka2oiLA0KICJub25jZSI6ICJuLTBTN
l9XekEyTWoiLA0KICJtYXhfYWdlIjogODY0MDAsDQogImNsYWltcyI6IA0KICB7DQogIC
AidXNlcmluZm8iOiANCiAgICB7DQogICAgICJnaXZlbl9uYW1lIjogeyJlc3NlbnRpYWw
iOiB0cnVlfSwNCiAgICAgIm5p
|
Esempio (contenuto del JWT):
{
client_id=https%3A%2F%2Frp.spid.agid.gov.it
code_challenge=qWJlMe0xdbXrKxTm72EpH659bUxAxw80
code_challenge_method=S256
nonce=MBzGqyf9QytD28eupyWhSqMj78WNqpc2
prompt=login
redirect_uri=https%3A%2F%2Frp.spid.agid.gov.it%2Fcallback1%2F
response_type=code
scope=openid
acr_values=https://www.spid.gov.it/SpidL1 https://www.spid.gov.it/SpidL2
claims={
"id_token":{
"nbf": { essential: true},
"jti": { essential: true}
},
"userinfo":{
"https://attributes.spid.gov.it/name": null,
"https://attributes.spid.gov.it/familyName": null
},
}
state=fyZiOL9Lf2CeKuNT2JzxiLRDink0uPcd
}
Parametro | Descrizione | Valori ammessi | Obbligatorio | ||||
client_id | URI che identifica univocamente il RP come da Registro SPID. | Deve corrispondere ad un valore nel Registro SPID. | SI | ||||
code_challenge | Un challenge per PKCE da riportare anche nella successiva richiesta al Token endpoint. | V. paragrafo 6.1 «Generazione del code_challenge per PKCE» | SI | ||||
code_challenge_method | Metodo di costru zione del challen ge PKCE. | È obbligatorio specificare il valore S256 | SI | ||||
nonce | Valore che serve ad evitare attacchi Reply, generato casualmente e non prevedibile da terzi. Questo valore sarà restituito nell’ID Token fornito dal Token Endpoint, in modo da consentire al client di verificare che sia uguale a quello inviato nella richiesta di autenticazione. | Stringa di almeno 32 caratteri alfanumerici. | SI | ||||
prompt | Definisce se l’OP deve occuparsi di eseguire una richiesta di autenticazione all’utente o meno. | consent: l’OP chiederà le credenziali di autenticazione all’utente (ma solo se non è già attiva una sessione di Single Sign-On) e successivamente chiederà il consenso al trasferimento degli attributi (valore consigliato). consent login: l’OP chiederà sempre le credenziali di autenticazione all’utente e successivamente chiederà il consenso al trasferimento degli attributi (valore da utilizzarsi limitatamente ai casi in cui si vuole forzare la riautenticazion e) |
SI | ||||
redirect_uri | URL dove l’OP reindirizzerà l’utente al termine del processo di autenticazione. | Deve essere uno degli URL indicati nel client metadata (v. paragrafo 3.2). | SI | ||||
response_type | Il tipo di credenziali che deve restituire l’OP. | code | SI | ||||
Scope | Lista degli scope richiesti. |
|
SI | ||||
acr_values | Valori di riferimento della classe di contesto dell’autenticaz ione richiesta. Stringa separata da uno spazio, che specifica i valori “acr” richiesti al server di autorizzazione per l’elaborazione della richiesta di autenticazione, con i valori visualizzati in ordine di preferenza. | https://www.spid.gov.it/SpidL1 https://www.spid.gov.it/SpidL2 https://www.spid.gov.it/SpidL3 | SI | ||||
Claims | Lista dei claims (attributi) che un RP intende richiedere per il servizio e livello SPID richiesto. | v. paragrafo 5.1 | SI | ||||
State | Valore univoco utilizzato per mantenere lo stato tra la request e il callback. Questo valore verrà restituito al client nella risposta al termine dell’autenticaz ione. Il valore deve essere significativo esclusivamente per il RP e non deve essere intellegibile ad altri. |
Stringa di almeno 32 caratteri alfanumerici. | SI | ||||
response_mode | Definisce la modalità di risposta del Form* | form_post | SI | ||||
ui_locales | Lingue preferibili per visualizzare le pagine dell’OP. L’OP può ignorare questo parametro se non dispone di nessuna delle lingue indicate. | Lista di codici RFC5646 separati da spazi. | NO |
Riferimenti: