OAuth explicado: roles, flujo PKCE y OAuth vs SAML

OAuth explicado

¿Qué es OAuth? Roles, flujo PKCE, OAuth vs SAML vs OIDC | We.Inc

OAuth 2.0 en palabras sencillas: los cuatro roles, el flujo authorization code con PKCE paso a paso, los scopes y en qué se diferencia OAuth de OpenID Connect y SAML.

OAuth 2.0 es un estándar que permite que una app actúe en tu nombre en otro servicio sin ver nunca tu contraseña. Apruebas una solicitud en la propia página de inicio de sesión del servicio, y la app recibe un access token limitado a los scopes que aceptaste. Se encarga de la autorización; OpenID Connect añade el inicio de sesión encima.

OAuth 2.0 vs OpenID Connect vs SAML 2.0

Antes de OAuth, conectar dos servicios solía significar escribir la contraseña de uno en el otro. OAuth lo sustituyó por tokens de vida corta y alcance limitado que solo se emiten después de que tú los apruebes. El generador de abajo crea un verifier y un challenge PKCE reales en tu navegador y construye la URL de autorización, para que veas cada parámetro que usa el flujo.

Preguntas frecuentes

¿OAuth es autenticación o autorización?

Autorización. Un access token dice qué puede hacer una app, no quién es el usuario, y puede que las APIs ni siquiera te lo digan. Cuando necesites la identidad de la persona, usa OpenID Connect, que devuelve un ID token firmado con claims como sub, iss, aud y exp.

¿Qué es PKCE y lo necesito?

PKCE (RFC 7636) vincula el authorization code a la app que inició el flujo. La app envía primero el hash de un secreto aleatorio y después el propio secreto, así que un code robado no sirve de nada. Usa S256, que los servidores deben admitir, en lugar de plain.

¿Qué diferencia hay entre OAuth y SAML?

SAML es un estándar más antiguo basado en XML en el que un proveedor de identidad envía una aserción firmada sobre el usuario a un proveedor de servicios, sobre todo para el inicio de sesión único empresarial en navegadores. OAuth emite tokens para acceder a APIs y funciona bien en apps móviles y APIs. OpenID Connect es el equivalente más cercano al inicio de sesión de SAML dentro del mundo OAuth.

¿Qué son los scopes?

Los scopes son los permisos que pide una app, escritos como una lista separada por espacios de strings que distinguen mayúsculas y que define el servidor de autorización, por ejemplo openid email o repo read:user. La pantalla de consentimiento los muestra, y el token solo cubre lo que se aprobó.

¿Debería seguir usando el flujo implicit?

No en proyectos nuevos. Devolvía los tokens en el fragmento de la URL, donde pueden filtrarse a través del historial y los logs. El flujo authorization code con PKCE ofrece la misma comodidad a las apps de navegador sin esa exposición.

Los cuatro roles

Por qué existe el intercambio del code

Dónde encaja OpenID Connect

El flujo authorization code con PKCE

Cada paso y los parámetros que lleva

PKCE en código

Crear un verifier y un challenge S256 en el navegador

32 bytes aleatorios codificados en base64url dan un verifier de 43 caracteres, la longitud mínima que permite RFC 7636.

Intercambiar el code por tokens

Se ejecuta después de la redirección. Compara primero state y luego envía el verifier guardado junto con el code.

Generador de PKCE y URL de autorización

Crea un code_verifier nuevo y su code_challenge S256 con las funciones criptográficas de tu navegador, y luego monta una URL de autorización con tus ajustes. No se envía nada; el endpoint de abajo es un marcador que debes sustituir.

Endpoint de autorización

Scopes (separados por espacios)

Nuevo verifier

code_verifier ({n} caracteres, mantenlo en secreto hasta el paso 4)

code_challenge (S256)

URL de autorización

Empieza gratis · Sin tarjeta de crédito

Relacionado: Guías

Producto

Para quién es

Funciones

Recursos

Empresa

Mapa del sitio