Docs Italia beta

Documenti pubblici, digitali.

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.
openid
(obbligatorio).
offline_access
se specificato, l’OP rilascerà oltre all’access token anche un refresh token necessario per instaurare sessioni lunghe revocabili. L’uso di questo valore è consentito solo se il client è un’applicazione per dispositivi mobili che intenda offrire all’utente una sessione lunga revocabile.
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:

http://openid.net/specs/openid-connect-core-1_0.html#AuthRequest

http://openid.net/specs/openid-igov-oauth2-1_0-02.html#rfc.section.2.1.1

http://openid.net/specs/openid-igov-openid-connect-1_0-02.html#rfc.section.2.1

http://openid.net/specs/openid-igov-openid-connect-1_0-02.html#rfc.section.2.4

http://openid.net/specs/openid-connect-core-1_0.html#JWTRequests

*https://openid.net/specs/oauth-v2-form-post-response-mode-1_0.html#FormPostesponseMode