Skip to content
Agent Identity

IETF · August 2021

The OAuth 2.0 Authorization Framework: JWT-Secured Authorization Request

RFC 9101

N. Sakimura, J. Bradley, M. Jones

RFCStableAuthorizationAdjacentField guide

Useful when a user-agent in the middle of a consent flow should not be able to widen the agent's requested permissions.

At a glance

Problem
Front-channel authorization parameters can be modified in transit. JAR wraps them in a signed (and optionally encrypted) JWT request object.
Identity / authn / authz
Integrity and authenticity of the authorization request. Used heavily in FAPI 1.0; FAPI 2.0 prefers PAR but still allows signed requests.

Actors

  • Client
  • Authorization server

01

The gap for agents

Front-channel authorization parameters can be modified in transit. JAR wraps them in a signed (optionally encrypted) JWT request object. Useful when a user-agent in the middle of a consent flow should not be able to widen the agent's requested permissions.

FAPI 1.0 used JAR heavily. FAPI 2.0 prefers PAR but still allows signed requests. If you already have PAR and confidential client auth, JAR is optional for many agent deployments.

02

Actors and trust boundaries

The client's signing key authenticates the request contents. aud must be the AS. The browser still carries the request or request_uri; encryption (JWE) hides contents from the user-agent.

03

Mechanics

RFC 9101: JWT containing authorization parameters, signed with the client key, passed as request or by reference as request_uri. Can combine with PAR (push a JAR).

request JWTfrom spec
Quoted: aud must be the AS. Integrity of the authorization request.

04

Step-by-step flows

Flow 1

Signed authorization request

  1. 1

    Client builds a JWT with the authorize parameters, aud=AS, signed with its key.

  2. 2

    Passes request=JWT or request_uri to a hosted object (or PAR).

  3. 3

    AS verifies signature and uses the JWT claims as the request, ignoring unsigned duplicates that would widen it.

05

Identity vs authentication vs authorization

Integrity and authenticity of the authorization request. Not user identity.

06

How it composes

  • PAR

    PAR hides; JAR signs. Together they cover leakage and tampering.

  • FAPI 2.0

    PAR is the FAPI 2 requirement; JAR is not the headline control.

  • JWT authorization grants

    Same client keys often used for private_key_jwt and JAR.

07

What bites agent implementers

  • Unsigned duplicates

    The AS must not let query parameters override signed values to a broader grant.

08

Stability — what you can ship

RFC 9101, August 2021. Stable. https://www.rfc-editor.org/rfc/rfc9101.html

Catalog claims (short form)

request JWT
aud must be the AS. Can be combined with PAR.

Implementer notes

If you already have PAR and confidential client auth, JAR is optional for many agent deployments. Keep it when you must prove the request came from a specific client key through an untrusted browser.

Relationship to others

Primary sources

  • RFC 9101https://www.rfc-editor.org/rfc/rfc9101.html