liveBook · Manning

Pushed authorization request

As explained in Secure APIs

An OAuth mechanism in which a client submits an authorization request object to an authorization server before initiating the user-facing authorization request.

A pushed authorization request (PAR) is an OAuth mechanism that moves an authorization request object to the authorization server before the user-facing authorization redirect. The client sends a signed JWT over an authenticated request, receives a unique request URI, and redirects the user agent using that URI. section 10.4 section 10.5

PAR reduces the exposure and manipulation of authorization parameters. Ordinary authorization URLs can leak client data into network logs, be observed by eavesdroppers, or be forged to alter the redirect_uri, steal authorization codes, or support CSRF attacks. Authentication lets the authorization server distinguish a legitimate pushed request from a forged one. section 10.5 section 10.7

A typical PAR exchange follows these steps:

  • Build the authorization request object with values such as response_type, client_id, redirect_uri, scope, state, and nonce. section 10.5
  • Sign the request object as a JWT using the client's private key, proving the request's integrity and origin. section 10.5
  • Push the signed request object to the authorization server through an authenticated request. section 10.7
  • Receive a unique request URI and place it in the user-facing authorization request's request_uri parameter. section 10.5

From exposed parameters to PAR

Instead of sending /authorize?response_type=code&client_id=s6BhdRkqt3&redirect_uri=https://example.com, the client signs the complete request object, pushes it to the authorization server, receives a unique request URI, and redirects the user agent with request_uri. The browser-facing URL then carries the reference rather than the full authorization request.

How Secure APIs covers it

How deep it goes
Explains the signed request object, authenticated push, request URI, redirect, and attack mitigations without detailing server implementation.
Examples
Uses exposed authorization URLs, signed request-object claims, and a request URI returned after pushing the request.
What it assumes
Assumes OAuth authorization requests and JWTs, while identifying exposed URL parameters and request authentication as security concerns.
What you can do after
Apply PAR by authenticating the client, pushing a signed request object, and redirecting with the returned request_uri.
How it connects
Connects OAuth authorization requests with JWT-secured authorization requests, confidential clients, authorization servers, and FAPI 2.0.

Related concepts

This explainer was generated by Manning's knowledge graph from the text of Secure APIs. The section links point to the parts of the book it draws on.