3. Requesting a JWT Access Token (Richiesta di un token di accesso JWT)
Un server di autorizzazione può emettere un token di accesso JWT in risposta a qualsiasi concessione di autorizzazione definita da [RFC6749] e successive estensioni destinate a risultare in un token di accesso.
Se la richiesta include un parametro "resource" (come definito in [RFC8707]), il claim "aud" del token di accesso JWT risultante dovrebbe (SHOULD) avere lo stesso valore del parametro "resource" nella richiesta.
Esempio di richiesta di seguito:
GET /as/authorization.oauth2?response_type=code
&client_id=s6BhdRkqt3
&state=xyz
&scope=openid%20profile%20reademail
&redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb
&resource=https%3A%2F%2Frs.example.com%2F HTTP/1.1
Host: authorization-server.example.com
Figura 1: Richiesta di autorizzazione con parametri Resource e Scope
Una volta riscattato, il codice ottenuto dalla richiesta sopra risulterà in un token di accesso JWT nella forma mostrata di seguito:
Intestazione:
{"typ":"at+JWT","alg":"RS256","kid":"RjEwOwOA"}
Claim:
{
"iss": "https://authorization-server.example.com/",
"sub": "5ba552d67",
"aud": "https://rs.example.com/",
"exp": 1639528912,
"iat": 1618354090,
"jti": "dbe39bf3a3ba4238a513f51d6e1691c4",
"client_id": "s6BhdRkqt3",
"scope": "openid profile reademail"
}
Figura 2: L'intestazione e l'insieme di claim JWT di un token di accesso JWT
Il server di autorizzazione non deve (MUST NOT) emettere un token di accesso JWT se l'autorizzazione concessa dal token sarebbe ambigua. Vedere la Sezione 5 per ulteriori dettagli sui casi comuni che potrebbero portare ad ambiguità e strategie che un server di autorizzazione può attuare per prevenirle.
Se la richiesta non include un parametro "resource", il server di autorizzazione deve (MUST) utilizzare un indicatore di risorsa predefinito nel claim "aud". Se un parametro "scope" è presente nella richiesta, il server di autorizzazione dovrebbe (SHOULD) utilizzarlo per dedurre il valore dell'indicatore di risorsa predefinito da utilizzare nel claim "aud". Il meccanismo attraverso il quale gli ambiti sono associati ai valori dell'indicatore di risorsa predefinito è al di fuori dell'ambito di questa specifica. Se i valori nel parametro "scope" si riferiscono a valori diversi dell'indicatore di risorsa predefinito, il server di autorizzazione dovrebbe (SHOULD) rifiutare la richiesta con "invalid_scope" come descritto nella Sezione 4.1.2.1 di [RFC6749].