Integración OIDC

DTZ Identity es un proveedor OpenID Connect (OIDC) conforme a los estándares. Cualquier servicio que admita OIDC puede delegar la autenticación a DTZ, permitiendo que sus usuarios inicien sesión con sus credenciales DTZ existentes.


Requisitos previos

  • Una cuenta DTZ y al menos un contexto (context-{id})
  • Un servicio o aplicación que admita OIDC / el flujo de código de autorización de OAuth 2.0

Endpoint de descubrimiento

DTZ publica un documento de descubrimiento OIDC estándar:

https://identity.dtz.rocks/.well-known/openid-configuration

La mayoría de las bibliotecas cliente OIDC aceptan una URL de emisor y obtienen este documento automáticamente para configurarse. Establezca el emisor en https://identity.dtz.rocks y permita que la biblioteca gestione el descubrimiento de endpoints.


Credenciales del cliente

DTZ utiliza el ID de contexto como client_id y client_secret. No se requiere un registro de aplicación separado.

Parámetro Valor
client_id Su ID de contexto, p. ej. context-abc123
client_secret Mismo ID de contexto
issuer https://identity.dtz.rocks

Referencia de configuración

Las siguientes variables de entorno muestran una integración típica:

OIDC_ISSUER=https://identity.dtz.rocks
OIDC_CLIENT_ID={YOUR_CONTEXT_ID}
OIDC_CLIENT_SECRET={YOUR_CONTEXT_ID}
OIDC_REDIRECT_URI=https://yourapp.example.com/login

Los nombres de las variables variarán según las bibliotecas y frameworks; lo que importa son los valores anteriores.


Reclamaciones del ID token

Tras un intercambio de tokens exitoso, el ID token y el endpoint userinfo devuelven las siguientes reclamaciones:

Reclamación Valor de ejemplo Descripción
sub identity-12345678 Identificador único de identidad
iss dtz.rocks Emisor del token — siempre dtz.rocks para tokens emitidos por DTZ
contexts ["abc124"] IDs de contexto a los que pertenece el usuario
roles ["https://dtz.rocks/context/admin/abc123"] URIs de roles concretos asignados al usuario

Control de acceso mediante claims

Utilice los valores de las claims para restringir quién puede acceder a su servicio después de un inicio de sesión OIDC exitoso.

Restringir a cualquier usuario de DTZ — compruebe que iss sea igual a dtz.rocks:

OIDC_ALLOWED_CLAIM=iss
OIDC_ALLOWED_VALUES=dtz.rocks

Restringir a usuarios en un contexto específico — compruebe el array contexts:

OIDC_ALLOWED_CLAIM=scope
OIDC_ALLOWED_VALUES={YOUR_CONTEXT_ID}}

Restringir a usuarios con un rol específico — compruebe el array roles en busca de una URI de rol concreta.

El mecanismo exacto para evaluar estas comprobaciones depende de su biblioteca OIDC o del middleware.


Flujo de código de autorización

  1. Redirigir al usuario no autenticado al endpoint de autorización de DTZ (resuelto mediante el descubrimiento).
  2. El usuario se autentica en https://identity.dtz.rocks. Los usuarios ya autenticados son redirigidos de vuelta inmediatamente.
  3. Intercambiar el código de autorización devuelto por tokens en el endpoint de token.
  4. Validar la claim iss del ID token y cualquier claim adicional de control de acceso.
  5. Conceder o denegar el acceso según su política de claims.

Endpoint userinfo

GET https://identity.dtz.rocks/api/2021-02-21/oauth/userinfo
Authorization: Bearer <access_token>

Devuelve las mismas claims que el ID token. Use este endpoint cuando necesite volver a obtener valores de claims actualizados después del inicio de sesión inicial.


Relacionados