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
- Redirigir al usuario no autenticado al endpoint de autorización de DTZ (resuelto mediante el descubrimiento).
- El usuario se autentica en
https://identity.dtz.rocks. Los usuarios ya autenticados son redirigidos de vuelta inmediatamente. - Intercambiar el código de autorización devuelto por tokens en el endpoint de token.
- Validar la claim
issdel ID token y cualquier claim adicional de control de acceso. - 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
- Resumen de OAuth 2 — cómo DTZ implementa el flujo de código de autorización
- Roles — comprender los roles concretos y abstractos
- Resumen de Identity — contextos, identidades y control de acceso