¿Qué es el Descubrimiento de OpenID Connect (OIDC)?
El Descubrimiento de OpenID Connect (OIDC), definido en OpenID Connect Discovery 1.0 , es un mecanismo que permite a los clientes descubrir automáticamente los puntos finales y la configuración del Proveedor OpenID. Es un enfoque moderno para simplificar la comunicación entre clientes y Proveedores OpenID .
El Descubrimiento de OIDC tiene dos componentes principales:
- Descubrimiento de la ubicación del issuer (proveedor de OpenID): El cliente puede descubrir la ubicación (URL) del issuer a través de WebFinger o un documento fuera de banda.
- Metadatos del Proveedor OpenID: El cliente puede recuperar y procesar el documento de metadatos para conocer las capacidades y puntos finales del Proveedor OpenID.
¿Cómo funciona el Descubrimiento de OIDC?
Descubrimiento del issuer del Proveedor OpenID
El issuer del Proveedor OpenID es un identificador único (usualmente el mismo que su URL) que los clientes pueden usar para descubrir la configuración del Proveedor OpenID. Sin embargo, los clientes necesitan conocer la ubicación del issuer antes de poder recuperar el documento de metadatos.
Si la ubicación del issuer ya es conocida, el cliente puede pasar al siguiente paso. De lo contrario, el cliente puede usar WebFinger para descubrir la ubicación del issuer. La información necesaria para el descubrimiento del issuer de OIDC es:
host
: Dónde se aloja el servicio de WebFinger.resource
: La dirección de correo electrónico o URL del Proveedor OpenID.rel
: El tipo de relación, que debe establecerse enhttp://openid.net/specs/connect/1.0/issuer
.
Por ejemplo, un usuario con la dirección de correo electrónico [email protected]
está tratando de descubrir la ubicación del issuer en example.com
. La solicitud de WebFinger se vería así:
GET /.well-known/webfinger?resource=acct%3Afoo%40bar.com&
rel=http%3A%2F%2Fopenid.net%2Fspecs%2Fconnect%2F1.0%2Fissuer HTTP/1.1
Host: example.com
El parámetro resource
decodificado es acct:[email protected]
, y el parámetro rel
es http://openid.net/specs/connect/1.0/issuer
.
Metadatos del Proveedor OpenID
Una vez que el cliente conoce la ubicación del issuer, puede recuperar el documento de metadatos desde el punto final bien conocido. La ruta al documento de metadatos es /.well-known/openid-configuration
relativa a la URL del issuer.
Por ejemplo, si la URL del issuer es https://oidc.example.com
, el cliente puede recuperar el documento de metadatos de https://oidc.example.com/.well-known/openid-configuration
. Aquí hay un ejemplo no normativo de la respuesta de los metadatos:
{
"issuer": "https://oidc.example.com",
"authorization_endpoint": "https://oidc.example.com/authorize",
"token_endpoint": "https://oidc.example.com/token",
//...
}
El documento de metadatos contiene mucha información útil sobre el Proveedor OpenID. Resaltemos algunos campos clave:
issuer
: El identificador único del Proveedor OpenID. Debe usarse para validar los tokens.authorization_endpoint
: La URL para iniciar la Solicitud de autenticación (Authentication request) .token_endpoint
: La URL para enviar la Solicitud de token (Token request) .jwks_uri
: La URL para recuperar el Conjunto de Claves Web JSON (JWKS) para la validación de la Clave de firma (Signing key) .response_types_supported
: Los tipos de respuesta soportados para la Solicitud de autenticación (Authentication request) .scopes_supported
: Los alcances soportados para la Solicitud de autenticación (Authentication request) .claims_supported
: Las afirmaciones soportadas para el Token de ID (ID token) .token_endpoint_auth_methods_supported
: Los métodos de autenticación de cliente soportados para la Solicitud de token (Token request) .
Para una lista exhaustiva de campos de metadatos, por favor consulta la especificación OpenID Connect Discovery 1.0 .