¿Qué son los Metadatos del Servidor de Autorización de OAuth 2.0?
Los Metadatos del Servidor de Autorización de OAuth 2.0 son un formato estandarizado definido en RFC 8414 que permite a los clientes de OAuth 2.0 descubrir y obtener automáticamente la información necesaria para interactuar con los servidores de autorización de OAuth 2.0.
Esto incluye información esencial como las ubicaciones de los endpoints, las características soportadas y las capacidades del servidor.
El formato de metadatos proporciona un documento de configuración legible por máquina que ayuda a agilizar el proceso de integración entre clientes y servidores de autorización, reduciendo la necesidad de configuración manual.
¿Cómo funcionan los Metadatos del Servidor de Autorización de OAuth 2.0?
En el ecosistema de OAuth 2.0, hay varios roles clave:
- Servidor de autorización (Authorization server) : Emite access tokens a los clientes después de autenticar exitosamente al resource owner
- Cliente (Client) : Aplicación que solicita acceso a recursos protegidos
- Propietario del recurso (Resource owner) : Entidad capaz de otorgar acceso a recursos protegidos
- Servidor de recursos (Resource server) : Servidor que aloja recursos protegidos
Los Metadatos del Servidor de Autorización proporcionan una forma estandarizada para que los clientes descubran y entiendan cómo interactuar con el servidor de autorización. Así es como funciona:
- El cliente conoce o descubre la URL del issuer del servidor de autorización
- El cliente construye la URL de metadatos añadiendo
/.well-known/oauth-authorization-server
a la URL del issuer - El cliente recupera el documento de metadatos que contiene la configuración del servidor
- El cliente utiliza los metadatos recuperados (endpoints, características soportadas, etc.) para configurarse adecuadamente e interactuar con el servidor de autorización
Por ejemplo, si la URL del issuer es https://auth.example.com
, los metadatos estarían disponibles en:
https://auth.example.com/.well-known/oauth-authorization-server
El documento de metadatos incluye información importante como:
issuer
: El identificador del servidor de autorizaciónauthorization_endpoint
: La URL del endpoint de autorizacióntoken_endpoint
: La URL del endpoint de tokenscopes_supported
: Scopes disponiblesresponse_types_supported
: Tipos de respuesta soportadostoken_endpoint_auth_methods_supported
: Métodos de autenticación del cliente soportados
Para una lista completa de campos de metadatos, por favor consulta RFC 8414 Sección 2 .
Con estos valores de metadatos, los clientes pueden configurar y ejecutar automáticamente el flujo de OAuth 2.0:
-
Configuración inicial:
- El cliente valida que el
issuer
coincide con el servidor de autorización esperado - El cliente verifica
response_types_supported
para asegurar que su tipo de flujo (por ejemplo,code
) es soportado
- El cliente valida que el
-
Solicitud de autorización (Authorization request):
- El cliente utiliza
authorization_endpoint
para construir la URL de autorización - El cliente selecciona los scopes apropiados de
scopes_supported
según sus necesidades - Ejemplo:
https://auth.example.com/authorize?response_type=code&scope=profile email
- El cliente utiliza
-
Intercambio de tokens (Token exchange):
- Después de recibir el código de autorización, el cliente utiliza
token_endpoint
para el intercambio de tokens - El cliente verifica
token_endpoint_auth_methods_supported
para determinar cómo autenticarse (por ejemplo,client_secret_basic
) - Ejemplo: Enviar una solicitud POST al endpoint de token con las credenciales del cliente y el código de autorización
- Después de recibir el código de autorización, el cliente utiliza
Este flujo básico ayuda a los clientes a configurarse automáticamente e interactuar con el servidor de autorización sin configuración manual de endpoints o selección de scopes por prueba y error.
¿Cuál es la diferencia entre los Metadatos del Servidor de Autorización de OAuth 2.0 y OpenID Connect Discovery?
Las principales diferencias son:
-
Alcance y Propósito:
- Los Metadatos del Servidor de Autorización de OAuth 2.0 se centran específicamente en la configuración del protocolo OAuth 2.0
- Descubrimiento de OpenID Connect (OpenID Connect Discovery) incluye parámetros adicionales para características relacionadas con la identidad, tales como:
userinfo_endpoint
: Endpoint para recuperar información del usuarioid_token_signing_alg_values_supported
: Algoritmos de firma soportados para ID Tokensclaims_supported
: Claims de usuario disponibles que pueden ser devueltos en el ID Token o desde el UserInfo Endpoint- Soporta el scope
openid
para autenticación - Incluye tipos de respuesta de flujo híbrido (por ejemplo,
code id_token
,code id_token token
)
-
Endpoint de Metadatos:
- OAuth 2.0 utiliza
/.well-known/oauth-authorization-server
- OpenID Connect utiliza
/.well-known/openid-configuration
- OAuth 2.0 utiliza
¿Cumplen los Metadatos del Servidor de Autorización de OAuth 2.0 con OpenID Connect Discovery?
Sí, los Metadatos del Servidor de Autorización de OAuth 2.0 son compatibles con Descubrimiento de OpenID Connect (OpenID Connect Discovery) .
La especificación de metadatos de OAuth 2.0 (RFC 8414) se inspiró en OpenID Connect Discovery 1.0, que ya estaba ampliamente adoptado en la práctica.
Puntos clave sobre el cumplimiento:
- El formato de metadatos sigue la misma estructura JSON
- Los servidores de autorización pueden soportar ambos endpoints simultáneamente
- Los Proveedores de OpenID típicamente exponen ambos endpoints para compatibilidad con versiones anteriores
- Los metadatos de OAuth 2.0 pueden extenderse con campos específicos de OpenID Connect cuando sea necesario
Esta compatibilidad asegura que los servidores de autorización puedan servir tanto a clientes puros de OAuth 2.0 como a partes confiables de OpenID Connect sin conflictos.