3. Requesting a JWT Access Token (Anforderung eines JWT-Zugriffstokens)
Ein Autorisierungsserver kann ein JWT-Zugriffstoken als Antwort auf jede durch [RFC6749] definierte Autorisierungsgewährung und nachfolgende Erweiterungen ausstellen, die ein Zugriffstoken zum Ergebnis haben sollen.
Wenn die Anfrage einen "resource"-Parameter (wie in [RFC8707] definiert) enthält, sollte (SHOULD) der "aud"-Claim des resultierenden JWT-Zugriffstokens denselben Wert wie der "resource"-Parameter in der Anfrage haben.
Beispielanfrage unten:
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
Abbildung 1: Autorisierungsanfrage mit Resource- und Scope-Parametern
Nach Einlösung führt der aus der obigen Anfrage erhaltene Code zu einem JWT-Zugriffstoken in der folgenden Form:
Header:
{"typ":"at+JWT","alg":"RS256","kid":"RjEwOwOA"}
Claims:
{
"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"
}
Abbildung 2: Der Header und die JWT-Claim-Menge eines JWT-Zugriffstokens
Der Autorisierungsserver darf (MUST NOT) ein JWT-Zugriffstoken ausstellen, wenn die durch das Token gewährte Autorisierung mehrdeutig wäre. Siehe Abschnitt 5 für weitere Details über häufige Fälle, die zu Mehrdeutigkeit führen können, und Strategien, die ein Autorisierungsserver umsetzen kann, um sie zu verhindern.
Wenn die Anfrage keinen "resource"-Parameter enthält, muss (MUST) der Autorisierungsserver einen Standard-Ressourcenindikator im "aud"-Claim verwenden. Wenn ein "scope"-Parameter in der Anfrage vorhanden ist, sollte (SHOULD) der Autorisierungsserver ihn verwenden, um den Wert des Standard-Ressourcenindikators abzuleiten, der im "aud"-Claim verwendet werden soll. Der Mechanismus, durch den Scopes mit Standard-Ressourcenindikatorwerten verknüpft werden, liegt außerhalb des Geltungsbereichs dieser Spezifikation. Wenn die Werte im "scope"-Parameter auf unterschiedliche Standard-Ressourcenindikatorwerte verweisen, sollte (SHOULD) der Autorisierungsserver die Anfrage mit "invalid_scope" ablehnen, wie in Abschnitt 4.1.2.1 von [RFC6749] beschrieben.