Intégration OIDC

DTZ Identity est un fournisseur OpenID Connect (OIDC) conforme aux standards. Tout service qui prend en charge OIDC peut déléguer l’authentification à DTZ, permettant à vos utilisateurs de se connecter avec leurs identifiants DTZ existants.


Prérequis

  • Un compte DTZ et au moins un contexte (context-{id})
  • Un service ou une application qui prend en charge OIDC / le flux d’autorisation OAuth 2.0 (authorization code)

Point de découverte

DTZ publie un document de découverte OIDC standard :

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

La plupart des bibliothèques clientes OIDC acceptent une URL d’issuer et récupèrent automatiquement ce document pour se configurer. Définissez l’issuer sur https://identity.dtz.rocks et laissez la bibliothèque gérer la découverte des endpoints.


Identifiants client

DTZ utilise l’ID de contexte comme client_id et client_secret. Aucune inscription d’application séparée n’est requise.

Paramètre Valeur
client_id Votre ID de contexte, ex. context-abc123
client_secret Même ID de contexte
issuer https://identity.dtz.rocks

Référence de configuration

Les variables d’environnement suivantes illustrent une intégration typique :

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

Les noms de variables diffèrent selon les bibliothèques et frameworks ; ce sont les valeurs ci‑dessus qui comptent.


Claims du jeton ID

Après un échange de jetons réussi, le jeton ID et l’endpoint userinfo renvoient les claims suivants :

Claim Valeur exemple Description
sub identity-12345678 Identifiant unique de l’identité
iss dtz.rocks Émetteur du jeton — toujours dtz.rocks pour les jetons émis par DTZ
contexts ["abc124"] IDs de contexte auxquels l’utilisateur appartient
roles ["https://dtz.rocks/context/admin/abc123"] URIs de rôles concrets assignés à l’utilisateur

Contrôle d’accès via les claims

Utilisez les valeurs des claims pour restreindre qui peut accéder à votre service après une connexion OIDC réussie.

Restreindre à tout utilisateur DTZ — vérifiez que iss est égal à dtz.rocks :

OIDC_ALLOWED_CLAIM=iss
OIDC_ALLOWED_VALUES=dtz.rocks

Restreindre aux utilisateurs d’un contexte spécifique — vérifiez le tableau contexts :

OIDC_ALLOWED_CLAIM=scope
OIDC_ALLOWED_VALUES={YOUR_CONTEXT_ID}}

Restreindre aux utilisateurs avec un rôle spécifique — vérifiez le tableau roles pour une URI de rôle concrète.

Le mécanisme exact d’évaluation de ces vérifications dépend de votre bibliothèque OIDC ou de votre middleware.


Flux d’autorisation (authorization code)

  1. Rediriger l’utilisateur non authentifié vers l’endpoint d’autorisation DTZ (résolu via la découverte).
  2. L’utilisateur s’authentifie sur https://identity.dtz.rocks. Les utilisateurs déjà connectés sont redirigés immédiatement.
  3. Échanger le code d’autorisation retourné contre des jetons au niveau de l’endpoint token.
  4. Valider le claim iss du jeton ID et tout claim supplémentaire de contrôle d’accès.
  5. Accorder ou refuser l’accès en fonction de votre politique de claims.

Point de terminaison userinfo

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

Renvoie les mêmes claims que le jeton ID. Utilisez cet endpoint lorsque vous devez récupérer à nouveau des valeurs de claims à jour après la connexion initiale.


Articles connexes