Errores comunes de URL encoding en redirecciones OAuth

Los bugs de redirección OAuth suelen venir de doble codificación, codificación ausente y confundir query strings con URLs anidadas.

Los problemas de redirección OAuth suelen ser problemas de URL encoding con distintivo de autenticación. El proveedor de identidad dice que el redirect_uri no coincide, el callback pierde un parámetro o una URL de retorno anidada se rompe tras el login.

La mayoría de estos bugs vienen de uno de tres sitios: codificación ausente, doble codificación o codificar el límite equivocado.

Consulta la guía principal de depuración de APIs para el flujo local completo. Cuando la estructura de la query no esté clara, lee analizar y reconstruir query strings de URL antes de cambiar la codificación.

El redirect URI debe coincidir exactamente

Los proveedores de identidad suelen comparar redirect URIs de forma estricta. Estos pueden ser valores distintos:

  • https://app.example.com/callback
  • https://app.example.com/callback/
  • https://app.example.com/callback?source=login
  • https%3A%2F%2Fapp.example.com%2Fcallback

El valor registrado, la petición de autorización y la ruta de callback de la aplicación deben coincidir.

Las URLs anidadas requieren cuidado especial

Un patrón habitual es una URL de login con un destino de retorno:

/login?return_to=/billing?tab=invoices&page=2

Los caracteres ? y & anidados pertenecen a la URL de retorno, no a la query externa del login. Sin codificación, el parser externo los dividirá incorrectamente.

La forma más segura codifica el valor anidado:

/login?return_to=%2Fbilling%3Ftab%3Dinvoices%26page%3D2

Usa Codificador y decodificador URL para inspeccionar cada límite por separado. Cuando la URL de autorización es una cadena larga, divide primero claves y valores con Parser de URL / Query Builder, y luego codifica o decodifica un componente a la vez.

Cuidado con la doble codificación

La doble codificación ocurre cuando tu código codifica un valor una vez y un framework o cliente HTTP lo codifica otra.

Señales incluyen:

  • %253A donde esperabas %3A.
  • %252F donde esperabas %2F.
  • Un proveedor que muestra un redirect URI que aún contiene signos de porcentaje tras decodificar una vez.

Decodifica una capa a la vez. Si el valor solo se vuelve legible tras dos decodificaciones, localiza dónde ocurre la segunda codificación.

Espacios y signos más no siempre son lo mismo

En application/x-www-form-urlencoded, + suele representar un espacio. En el percent encoding general de URL, los espacios son %20 y los signos más son signos más literales.

Los parámetros OAuth a menudo pasan por form posts, URLs, logs y helpers de SDK. Sé explícito sobre qué modo de codificación se está usando.

Checklist de depuración

Cuando falle el callback:

  • Compara el redirect URI registrado con el valor de la petición.
  • Decodifica el valor de la petición exactamente una vez.
  • Comprueba si las URLs anidadas están codificadas como un único valor de parámetro.
  • Busca %25, señal de que el propio % fue codificado.
  • Confirma que los valores state y nonce sobreviven al round trip.

OAuth puede ser complejo, pero muchos bugs de redirección se vuelven simples una vez separas cada capa de URL.

Vuelve al resumen del flujo de depuración de APIs cuando necesites la cadena completa de herramientas.

In this topic

Related articles

Complete guideHerramientas locales del navegador para depurar APIsUsa herramientas que se ejecutan en el navegador para revisar JSON, JWT, URL, cURL y timestamps sin subir datos sensibles.Analizar y reconstruir query strings de URLSepara, revisa y reconstruye parámetros de URL para depurar OAuth, filtros, tracking y enlaces compartidos.

Herramientas relacionadas

Usa las herramientas de este artículo

Codificador y decodificador URLurl / uri / encodeAnalizador URL / Query Builderurl parser / query string parser / url query builderDecodificador JWT onlinejwt / jwt decode / jwt decoderFormateador JSON online gratuitojson / formatter / validator

Cursos relacionados

Curso de URL encodingQué aprenderás en este curso y cómo están organizadas las lecciones.Curso práctico de JWTQué aprenderás en este curso y cómo están organizadas las lecciones.

Volver a artículos