Saltar al contenido principal
Para usar las funcionalidades de Highly Regulated Identity, debe contar con un plan Enterprise con el complemento Highly Regulated Identity. Consulte Auth0 Pricing para obtener más información.
Pushed Authorization Request (PAR) es un protocolo de backend para enviar solicitudes de autorización directamente al . Es un componente técnico del Financial-Grade API (FAPI) Security Profile 1.0 destinado a proteger las API en escenarios de alto valor.

Cómo funciona

PAR permite que su aplicación envíe los parámetros de las solicitudes de autorización de directamente al endpoint PAR del Servidor de autorización (1). Como respuesta, el Servidor de autorización envía un valor de URI de solicitud, request_uri (2), para usarlo cuando llame al endpoint /authorize (3). El request_uri es una referencia a las solicitudes de autorización almacenadas en el endpoint /par, por lo que no quedan expuestas (4). Para obtener más información, lea Configurar solicitudes de autorización push.

Beneficios

Una de las ventajas de usar PAR es la validación temprana. En otros flujos de OAuth 2.0, como el Flujo de código de autorización, los usuarios finales son redirigidos al Servidor de autorización para la validación. En PAR, los parámetros de la solicitud se validan al inicio de la solicitud de autorización, antes de redirigir al usuario final. No es recomendable redirigir a los usuarios para mostrarles una página de error. PAR también envía las solicitudes de autorización por el back-channel. Las comunicaciones por el front-channel dependen de un intermediario (por ejemplo, un navegador) mediante parámetros de consulta HTTPS añadidos (GET, POST). Los mensajes no se envían directamente. Las comunicaciones por el back-channel se envían en el cuerpo de una solicitud autenticada del backend, lo que ofrece un enfoque más directo. Las solicitudes de autorización push viajan por el back-channel, lo que significa lo siguiente:
  • El Servidor de autorización puede confiar en el origen de la solicitud, y las solicitudes no han sido modificadas por un usuario final.
  • Los detalles de la solicitud no quedan expuestos en la barra ni en el historial del navegador, y la privacidad se preserva en ese punto del proceso.
  • Las restricciones de longitud de la URL no son un factor limitante.

Limitaciones

  • El tamaño máximo de la carga útil de la solicitud es de 10 KB.
  • Actualmente no se admiten las aplicaciones públicas. Para obtener más información, consulta Public and Confidential Applications.

Llama al endpoint PAR

Requisitos

Para realizar una llamada al endpoint PAR, debe:
  • Establecer el tipo de contenido de la solicitud en application/x-www-form-urlencoded.
  • Usar cadenas para todos los parámetros que se envíen.
  • Incluir en la solicitud un parámetro adicional para el método de autenticación de la aplicación. Solo los son compatibles con PAR, por lo que están disponibles los siguientes métodos de autenticación de la aplicación: , de clave privada y mTLS. Debe usar el mismo método de autenticación de la aplicación para el endpoint /token al recuperar un .

Parámetros admitidos

El endpoint PAR solo almacena y procesa:
  • Los parámetros estándar de OAuth 2.0 y las extensiones aplicables que reconocemos en el endpoint de autorización.
  • Hasta 10 parámetros de autorización personalizados con el prefijo ext-.
PAR ignora los parámetros de autorización personalizados adicionales. Los parámetros de autorización personalizados no están disponibles en Auth0 Actions ni en Logs.
Si usa parámetros de autorización personalizados en Actions, debe añadir el prefijo ext-. De lo contrario, no estarán disponibles.

Ejemplo de solicitud de PAR

curl --location --request POST https://$tenant/oauth/par \
  -H "content-type: application/x-www-form-urlencoded" \
  -d "client_id=CLIENT_ID"\
"&client_secret=CLIENT_SECRET"\
"&redirect_uri=https://jwt.io"\
"&audience=urn:my-notes-api"\
"&scope=openid%20profile%20read:notes"\
"&response_type=code"

Ejemplo de respuesta PAR

En el siguiente ejemplo de respuesta PAR:
  • request_uri es una referencia a las solicitudes de autorización almacenadas. Los valores de la solicitud se pasan al endpoint GET /authorize como parámetro request_uri.
  • expires_in es la cantidad de segundos durante los que request_uri es válido. Transcurrido ese tiempo, request_uri caduca si no se utiliza. El tiempo de expiración de treinta segundos es un valor estático y no se puede configurar.
HTTP/1.1 201 Created
 Content-Type: application/json

 {
  "request_uri":
    "urn:ietf:params:oauth:request_uri:6esc_11ACC5bwc014ltc14eY22c",
  "expires_in": 30
 }

Límites de frecuencia

Para los inquilinos de producción Essential, Professional y Enterprise, las llamadas al endpoint PAR se incluyen en el límite de tasa estándar de Authentication API. Para obtener más información, consulte Configuraciones de límites de tasa y seleccione su tipo de suscripción. Luego, haga clic en Authentication API.

Llamar al endpoint de autorización

La aplicación usa el valor request_uri devuelto por el endpoint /oauth/par en la solicitud de autorización y redirige el agente de usuario al endpoint de autorización. Para obtener más información sobre el parámetro request_uri, consulte Configure Push Authorization Requests. En el siguiente ejemplo, el agente de usuario realiza la siguiente solicitud HTTP:
GET /authorize?client_id=CLIENT_ID&request_uri=urn%3Aietf%3Aparam...qrwSI HTTP/1.1 Host: TENANT.auth0.com
En el caso de un request_uri válido, el resto del es el mismo.

Validación

  • El Servidor de autorización vuelve a validar PAR en esta etapa, como cualquier otra solicitud de autorización.
  • El valor de request_uri solo se puede usar una vez.
  • El Servidor de autorización rechazará un request_uri vencido.
  • Se rechazará una solicitud que no sea PAR si PAR es obligatorio a nivel del inquilino o del cliente.

Más información