Passa al contenuto principale

2. Authorization Server Metadata (Metadati del server di autorizzazione)

Il server di autorizzazione (Authorization Server) può avere metadati (Metadata) che descrivono la sua configurazione. Questa specifica utilizza i seguenti valori di metadati del server di autorizzazione, che sono registrati nel registro IANA "OAuth Authorization Server Metadata" stabilito nella sezione 7.1:

issuer

  • Obbligatorio (REQUIRED). L'identificatore dell'emittente (issuer identifier) del server di autorizzazione, che è un URL che utilizza lo schema "https" senza componenti di query (query) o frammento (fragment). I metadati del server di autorizzazione sono pubblicati in una posizione ".well-known" derivata da questo identificatore dell'emittente in conformità con RFC 5785 [RFC5785], come descritto nella sezione 3. L'identificatore dell'emittente viene utilizzato per prevenire attacchi di confusione del server di autorizzazione (authorization server mix-up attacks), come descritto in "OAuth 2.0 Mix-Up Mitigation" [MIX-UP].

authorization_endpoint

  • L'URL dell'endpoint di autorizzazione (Authorization Endpoint) [RFC6749] del server di autorizzazione. Questo è obbligatorio (REQUIRED) a meno che non sia supportato alcun tipo di concessione (grant type) che utilizzi l'endpoint di autorizzazione.

token_endpoint

  • L'URL dell'endpoint dei token (Token Endpoint) [RFC6749] del server di autorizzazione. Questo è obbligatorio (REQUIRED) a meno che sia supportato solo il tipo di concessione implicita (implicit grant type).

jwks_uri

  • Opzionale (OPTIONAL). L'URL del documento JWK Set [JWK] del server di autorizzazione. Il documento referenziato contiene le chiavi di firma (signing key) utilizzate dal client (Client) per verificare le firme provenienti dal server di autorizzazione. Questo URL deve (MUST) utilizzare lo schema "https". Il JWK Set può (MAY) anche contenere le chiavi di crittografia (encryption key) del server, che i client utilizzano per crittografare le richieste al server. Quando sono disponibili sia chiavi di firma che di crittografia, tutte le chiavi nel JWK Set referenziato sono obbligatorie (REQUIRED) ad avere un valore del parametro "use" (utilizzo della chiave pubblica, public key use) per indicare l'uso previsto di ciascuna chiave.

registration_endpoint

  • Opzionale (OPTIONAL). L'URL dell'endpoint di registrazione dinamica del client OAuth 2.0 (Dynamic Client Registration Endpoint) [RFC7591] del server di autorizzazione.

scopes_supported

  • Raccomandato (RECOMMENDED). Un array JSON contenente un elenco dei valori di "scope" OAuth 2.0 [RFC6749] supportati da questo server di autorizzazione. Anche quando si utilizza questo parametro, il server può (MAY) scegliere di non pubblicare alcuni valori di scope supportati.

response_types_supported

  • Obbligatorio (REQUIRED). Un array JSON contenente un elenco dei valori "response_type" OAuth 2.0 supportati da questo server di autorizzazione. I valori dell'array utilizzati sono gli stessi di quelli utilizzati con il parametro "response_types" definito da "OAuth 2.0 Dynamic Client Registration Protocol" [RFC7591].

response_modes_supported

  • Opzionale (OPTIONAL). Un array JSON contenente un elenco dei valori "response_mode" OAuth 2.0 supportati da questo server di autorizzazione, come specificato in "OAuth 2.0 Multiple Response Type Encoding Practices" [OAuth.Responses]. Se omesso, il valore predefinito è ["query", "fragment"]. Il valore della modalità di risposta "form_post" è anche definito in "OAuth 2.0 Form Post Response Mode" [OAuth.Post].

grant_types_supported

  • Opzionale (OPTIONAL). Un array JSON contenente un elenco dei valori di tipo di concessione (grant type) OAuth 2.0 supportati da questo server di autorizzazione. I valori dell'array utilizzati sono gli stessi di quelli utilizzati con il parametro "grant_types" definito da "OAuth 2.0 Dynamic Client Registration Protocol" [RFC7591]. Se omesso, il valore predefinito è ["authorization_code", "implicit"].

token_endpoint_auth_methods_supported

  • Opzionale (OPTIONAL). Un array JSON contenente un elenco dei metodi di autenticazione del client (client authentication method) supportati da questo endpoint dei token. I valori dei metodi di autenticazione del client sono utilizzati dal parametro "token_endpoint_auth_method" definito nella sezione 2 di [RFC7591]. Se omesso, il valore predefinito è "client_secret_basic" -- lo schema di autenticazione di base HTTP (HTTP Basic Authentication Scheme) specificato nella sezione 2.3.1 di OAuth 2.0 [RFC6749].

token_endpoint_auth_signing_alg_values_supported

  • Opzionale (OPTIONAL). Un array JSON contenente un elenco degli algoritmi di firma JWS (valori "alg") supportati dall'endpoint dei token per la firma di JWT [JWT] quando si utilizzano i metodi di autenticazione "private_key_jwt" e "client_secret_jwt" per l'autenticazione del client all'endpoint dei token. Se uno di questi due metodi di autenticazione è specificato nella voce "token_endpoint_auth_methods_supported", questa voce di metadati deve (MUST) essere presente. Se questa voce è omessa, non viene implicato alcun algoritmo predefinito. Il server dovrebbe (SHOULD) supportare "RS256". Il valore "none" non deve (MUST NOT) essere utilizzato.

service_documentation

  • Opzionale (OPTIONAL). URL di una pagina contenente informazioni leggibili dall'uomo (human-readable information) che gli sviluppatori potrebbero voler o dover conoscere quando utilizzano il server di autorizzazione. In particolare, se il server di autorizzazione non supporta la registrazione dinamica del client (Dynamic Client Registration), in questa documentazione devono essere fornite informazioni su come registrare i client.

ui_locales_supported

  • Opzionale (OPTIONAL). Lingue e script supportati per l'interfaccia utente, rappresentati come array JSON di valori di tag linguistici da BCP 47 [RFC5646]. Se omesso, l'insieme delle lingue e degli script supportati non è specificato.

op_policy_uri

  • Opzionale (OPTIONAL). Un URL fornito dal server di autorizzazione alla persona che registra un client per leggere i requisiti del server di autorizzazione su come il client può utilizzare i dati forniti dal server di autorizzazione. Se fornito, il processo di registrazione dovrebbe (SHOULD) mostrare questo URL alla persona che registra il client. Come indicato nella sezione 5, sebbene l'identificatore "op_policy_uri" sembri specifico di OpenID, il suo utilizzo in questa specifica si riferisce effettivamente a funzionalità OAuth 2.0 generali e non è specifico di OpenID Connect.

op_tos_uri

  • Opzionale (OPTIONAL). Un URL fornito dal server di autorizzazione alla persona che registra un client per leggere i termini di servizio (terms of service) del server di autorizzazione. Se fornito, il processo di registrazione dovrebbe (SHOULD) mostrare questo URL alla persona che registra il client. Come indicato nella sezione 5, sebbene l'identificatore "op_tos_uri" sembri specifico di OpenID, il suo utilizzo in questa specifica si riferisce effettivamente a funzionalità OAuth 2.0 generali e non è specifico di OpenID Connect.

revocation_endpoint

  • Opzionale (OPTIONAL). L'URL dell'endpoint di revoca OAuth 2.0 (Revocation Endpoint) [RFC7009] del server di autorizzazione.

revocation_endpoint_auth_methods_supported

  • Opzionale (OPTIONAL). Un array JSON contenente un elenco dei metodi di autenticazione del client supportati da questo endpoint di revoca. I valori validi dei metodi di autenticazione del client sono quelli registrati nel registro IANA "OAuth Token Endpoint Authentication Methods" [IANA.OAuth.Parameters]. Se omesso, il valore predefinito è "client_secret_basic" -- lo schema di autenticazione di base HTTP specificato nella sezione 2.3.1 di OAuth 2.0 [RFC6749].

revocation_endpoint_auth_signing_alg_values_supported

  • Opzionale (OPTIONAL). Un array JSON contenente un elenco degli algoritmi di firma JWS (valori "alg") supportati dall'endpoint di revoca per la firma di JWT [JWT] quando si utilizzano i metodi di autenticazione "private_key_jwt" e "client_secret_jwt" per l'autenticazione del client all'endpoint di revoca. Se uno di questi due metodi di autenticazione è specificato nella voce "revocation_endpoint_auth_methods_supported", questa voce di metadati deve (MUST) essere presente. Se questa voce è omessa, non viene implicato alcun algoritmo predefinito. Il valore "none" non deve (MUST NOT) essere utilizzato.

introspection_endpoint

  • Opzionale (OPTIONAL). L'URL dell'endpoint di introspezione OAuth 2.0 (Introspection Endpoint) [RFC7662] del server di autorizzazione.

introspection_endpoint_auth_methods_supported

  • Opzionale (OPTIONAL). Un array JSON contenente un elenco dei metodi di autenticazione del client supportati da questo endpoint di introspezione. I valori validi dei metodi di autenticazione del client sono quelli registrati nel registro IANA "OAuth Token Endpoint Authentication Methods" [IANA.OAuth.Parameters] o nel registro IANA "OAuth Access Token Types" [IANA.OAuth.Parameters]. (Per il motivo indicato nella sezione 7.2, questi valori sono e rimarranno distinti.) Se omesso, l'insieme dei metodi di autenticazione supportati deve (MUST) essere determinato con altri mezzi.

introspection_endpoint_auth_signing_alg_values_supported

  • Opzionale (OPTIONAL). Un array JSON contenente un elenco degli algoritmi di firma JWS (valori "alg") supportati dall'endpoint di introspezione per la firma di JWT [JWT] quando si utilizzano i metodi di autenticazione "private_key_jwt" e "client_secret_jwt" per l'autenticazione del client all'endpoint di introspezione. Se uno di questi due metodi di autenticazione è specificato nella voce "introspection_endpoint_auth_methods_supported", questa voce di metadati deve (MUST) essere presente. Se questa voce è omessa, non viene implicato alcun algoritmo predefinito. Il valore "none" non deve (MUST NOT) essere utilizzato.

code_challenge_methods_supported

  • Opzionale (OPTIONAL). Un array JSON contenente un elenco dei metodi di sfida del codice (code challenge method) Proof Key for Code Exchange (PKCE) [RFC7636] supportati da questo server di autorizzazione. I valori dei metodi di sfida del codice sono utilizzati nel parametro "code_challenge_method" definito nella sezione 4.3 di [RFC7636]. I valori validi dei metodi di sfida del codice sono quelli registrati nel registro IANA "PKCE Code Challenge Methods" [IANA.OAuth.Parameters]. Se omesso, il server di autorizzazione non supporta PKCE.

Altri parametri di metadati del server di autorizzazione possono (MAY) anche essere utilizzati. Alcuni sono definiti da altre specifiche, come OpenID Connect Discovery 1.0 [OpenID.Discovery].

2.1. Signed Authorization Server Metadata (Metadati firmati del server di autorizzazione)

Oltre agli elementi JSON, i valori dei metadati possono (MAY) anche essere forniti come valore "signed_metadata", che è un JSON Web Token (JWT) [JWT] che asserisce come bundle i valori dei metadati relativi al server di autorizzazione. L'insieme di claim che possono essere utilizzati nei metadati firmati è definito nella sezione 2. I metadati firmati devono (MUST) essere firmati digitalmente o MACati utilizzando JSON Web Signature (JWS) [JWS], e devono (MUST) contenere un claim "iss" (emittente, issuer) che rappresenta la parte che asserisce i claim nei metadati firmati. I consumatori di metadati che non supportano questa funzionalità possono (MAY) ignorare i metadati firmati. Se il consumatore di metadati supporta i metadati firmati, i valori dei metadati comunicati nei metadati firmati devono (MUST) avere la precedenza sui valori corrispondenti comunicati utilizzando elementi JSON semplici.

I metadati firmati sono inclusi nell'oggetto JSON dei metadati del server di autorizzazione utilizzando questo membro opzionale (OPTIONAL):

signed_metadata

  • Un JWT contenente valori di metadati relativi al server di autorizzazione come claim. Questo è un valore stringa composto dall'intero JWT firmato. Il valore dei metadati "signed_metadata" non dovrebbe (SHOULD NOT) apparire come claim nel JWT.