> ## Documentation Index
> Fetch the complete documentation index at: https://docs.wandb.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Utiliser des identités fédérées avec le SDK

> Utilisez la fédération d’identités avec des JSON Web Tokens (JWT) pour vous authentifier au SDK et à la CLI W&B sans clé API.

Utilisez la fédération d’identités pour vous connecter au SDK et à la CLI W\&B avec les identifiants de votre organisation, plutôt qu’avec une clé API de longue durée. Si l’administrateur de l’organisation W\&B a configuré le SSO pour votre organisation, vous utilisez déjà ces identifiants pour vous connecter à l’interface de l’application W\&B. La fédération d’identités s’apparente au SSO pour le SDK W\&B, mais utilise directement des JSON Web Tokens (JWT). Utilisez la fédération d’identités comme alternative aux clés API.

Cette page s’adresse aux Administrateurs de l’organisation qui configurent l’émetteur JWT pour une organisation W\&B. Elle s’adresse également aux utilisateurs ou aux comptes de service qui s’authentifient auprès de W\&B à l’aide de JWT.

La [RFC 7523](https://datatracker.ietf.org/doc/html/rfc7523) constitue la base de la fédération d’identités avec le SDK.

<Note>
  La fédération d’identités est disponible en préversion pour Cloud mutualisé, Cloud dédié et Autogéré. Une [licence Enterprise](/fr/platform/hosting/enterprise-licenses) est requise. Pour plus de détails ou pour obtenir de l’assistance, contactez votre AISE ou l’[assistance](mailto:support@wandb.com).
</Note>

<Note>
  Ce document utilise les termes "fournisseur d’identité" et "émetteur JWT" de manière interchangeable. Ils désignent tous deux la même chose dans le contexte de cette fonctionnalité.
</Note>

<div id="set-up-the-jwt-issuer">
  ## Configurer l’émetteur JWT
</div>

Avant que les utilisateurs puissent s’authentifier avec des JWT, un administrateur de l’organisation doit configurer une fédération entre votre organisation W\&B et un émetteur JWT accessible publiquement.

1. Accédez à l’onglet **Settings** dans le tableau de bord de votre organisation.
2. Dans l’option **Authentication**, cliquez sur **Set up JWT Issuer**.
3. Ajoutez l’URL de l’émetteur JWT dans la zone de texte, puis cliquez sur **Create**.

W\&B recherche automatiquement un document de découverte OIDC à l’emplacement `${ISSUER_URL}/.well-known/openid-configuration`. À partir de ce document, W\&B localise le JSON Web Key Set (JWKS) à l’URL correspondante. W\&B utilise le JWKS pour valider les JWT en temps réel et s’assurer qu’ils ont bien été émis par le fournisseur d’identité concerné.

Après cette étape, votre organisation W\&B est fédérée avec l’émetteur JWT. Les Users de votre organisation peuvent alors s’authentifier auprès de W\&B à l’aide de JWT émis par ce fournisseur.

<div id="use-the-jwt-to-access-wb">
  ## Utiliser le JWT pour accéder à W\&B
</div>

Une fois qu’un administrateur de l’organisation a configuré un émetteur JWT, les utilisateurs peuvent commencer à accéder aux projets W\&B à l’aide de JWT émis par ce fournisseur d’identité. Le mécanisme d’utilisation des JWT est le suivant :

1. Vous devez vous connecter au fournisseur d’identité à l’aide de l’un des mécanismes disponibles dans votre organisation. Vous pouvez accéder à certains fournisseurs de manière automatisée à l’aide d’une API ou d’un SDK, tandis que d’autres ne sont accessibles que via l’interface utilisateur correspondante. Contactez l’administrateur de votre organisation W\&B ou le propriétaire de l’émetteur JWT pour plus d’informations.
2. Après avoir récupéré le JWT en vous connectant à votre fournisseur d’identité, stockez-le dans un fichier à un emplacement sécurisé. Configurez le chemin absolu de ce fichier dans la variable d’environnement `WANDB_IDENTITY_TOKEN_FILE`.
3. Accédez à votre projet W\&B à l’aide du SDK ou de la CLI W\&B. Le SDK ou la CLI détecte automatiquement le JWT et l’échange contre un jeton d’accès W\&B après l’avoir validé. Le jeton d’accès W\&B donne accès aux API pertinentes pour prendre en charge vos flux de travail d’IA, par exemple pour journaliser les runs, les métriques et les artefacts. Par défaut, le jeton d’accès est stocké au chemin `~/.config/wandb/credentials.json`. Vous pouvez modifier ce chemin en définissant la variable d’environnement `WANDB_CREDENTIALS_FILE`.

<Note>
  Les JWT sont des identifiants à courte durée de vie qui corrigent les limites des identifiants à longue durée de vie, comme les clés API et les mots de passe. La durée de validité du JWT dépend de la configuration de votre fournisseur d’identité. Actualisez le JWT avant son expiration et assurez-vous qu’il est stocké dans le fichier référencé par la variable d’environnement `WANDB_IDENTITY_TOKEN_FILE`.

  Le jeton d’accès W\&B a également une durée de validité par défaut, au-delà de laquelle le SDK ou la CLI tente de le renouveler à l’aide de votre JWT. Si le JWT de l’utilisateur a lui aussi expiré à ce moment-là et n’a pas été actualisé, l’authentification échoue. Si possible, implémentez le mécanisme de récupération du JWT et de renouvellement après expiration dans la charge de travail d’IA qui utilise le SDK ou la CLI W\&B.
</Note>

<div id="jwt-validation">
  ### Validation du JWT
</div>

Pour garantir que seuls des jetons valides accordent l'accès, le JWT fait l'objet des validations suivantes. Ces validations sont exécutées lorsque le SDK ou la CLI échange le JWT contre un jeton d'accès W\&B, puis accède à un projet :

* W\&B vérifie la signature du JWT à l'aide du JWKS au niveau de l'organisation W\&B. Il s'agit de la première ligne de défense et, si cette vérification échoue, cela signifie qu'il y a un problème avec votre JWKS ou avec la façon dont votre JWT est signé.

* Le claim `iss` du JWT doit être égal à l'URL de l'émetteur configurée au niveau de l'organisation.

* Le claim `sub` du JWT doit être égal à l'adresse e-mail de l'utilisateur telle qu'elle est configurée dans l'organisation W\&B.

* Le claim `aud` du JWT doit être égal au nom de l'organisation W\&B qui héberge le projet auquel vous accédez dans le cadre de votre flux de travail d'IA.

  Sur les instances [Cloud dédié](/fr/platform/hosting/hosting-options/dedicated-cloud) ou [Autogéré](/fr/platform/hosting/hosting-options/self-managed) :

  * Pour ignorer la validation de l'audience, vous pouvez définir la variable d'environnement `FEDERATED_AUTH_AUDIENCES` sur `wandb`.
  * Certaines organisations ont des exigences spécifiques pour l'audience. Pour personnaliser la valeur de `aud`, définissez la variable d'environnement `FEDERATED_AUTH_AUDIENCES` sur une chaîne contenant une liste de valeurs d'audience séparées par des virgules.

* W\&B vérifie le claim `exp` du JWT pour déterminer si le jeton est valide ou s'il a expiré et doit être renouvelé.

<div id="external-service-accounts">
  ## Comptes de service externes
</div>

W\&B prend en charge depuis longtemps les comptes de service intégrés avec des clés API à longue durée de vie. Avec la fédération d’identités pour le SDK et la CLI, vous pouvez également utiliser des comptes de service externes qui s’authentifient à l’aide de JWT. L’émetteur configuré de l’organisation doit émettre ces JWT. Un administrateur de l’équipe peut configurer des comptes de service externes à l’échelle d’une équipe, comme les comptes de service intégrés.

Pour configurer un compte de service externe, un administrateur de l’équipe doit :

1. Accédez à l’onglet **Service Accounts** de votre équipe.
2. Cliquez sur **New service account**.
3. Fournissez un nom au compte de service.
4. Sélectionnez **Federated Identity** comme **Authentication Method**, puis indiquez un **Subject**. Voir [Déterminer la valeur du champ Subject pour votre fournisseur d’identité](#determine-the-subject-value-for-your-identity-provider).
5. Cliquez sur **Create**.

Après cette étape, le compte de service externe est enregistré pour l’équipe et peut utiliser des JWT émis par le fournisseur d’identité configuré pour accéder à W\&B. Le claim `sub` dans le JWT du compte de service externe doit être égal au sujet configuré par l’administrateur de l’équipe dans l’onglet **Service Accounts** au niveau de l’équipe. W\&B vérifie ce claim dans le cadre de la [validation du JWT](#jwt-validation). L’exigence relative au claim `aud` est similaire à celle des JWT d’utilisateurs humains.

Lors de l’[utilisation du JWT d’un compte de service externe pour accéder à W\&B](#use-the-jwt-to-access-wb), il est souvent plus simple d’automatiser le flux de travail. L’automatisation génère le JWT initial et le renouvelle si nécessaire. Pour attribuer les runs enregistrés à l’aide d’un compte de service externe à un utilisateur humain, configurez les variables d’environnement `WANDB_USERNAME` ou `WANDB_USER_EMAIL` pour votre flux de travail d’IA, comme pour les comptes de service intégrés.

<Note>
  W\&B recommande d’utiliser un mélange de comptes de service intégrés et externes pour vos charges de travail d’IA présentant différents niveaux de sensibilité des données. Cette approche offre un bon équilibre entre flexibilité et simplicité.
</Note>

<div id="determine-the-subject-value-for-your-identity-provider">
  ### Déterminer la valeur de Subject pour votre fournisseur d’identité
</div>

La valeur que vous saisissez pour **Subject** doit correspondre exactement à la revendication `sub` (subject) des JWT émis par votre IdP pour le compte de service. W\&B applique la même comparaison à tous les fournisseurs d’identité. La correspondance est exacte, sensible à la casse et aux espaces : même un espace final ou une différence de majuscules/minuscules entraîne l’échec de l’authentification.

W\&B App accepte n’importe quel **Subject** non vide sans en valider la valeur, car celle-ci dépend entièrement de l’IdP. W\&B ne peut pas détecter une valeur incorrecte lorsque vous créez le compte de service. À la place, l’authentification échoue plus tard, lorsque le compte de service présente son JWT.

Le moyen le plus fiable de déterminer la valeur correcte consiste à la lire dans un jeton réel. Obtenez un exemple de JWT émis pour le compte de service, décodez localement en base64url sa charge utile (le segment central, entre les deux points), puis copiez la valeur `sub` telle quelle dans le champ **Subject**. Ne collez pas de JWT dans des décodeurs en ligne tiers, car un JWT est une donnée d’authentification.

La valeur diffère selon le fournisseur. Les exemples suivants sont typiques, mais vérifiez-les toujours à partir d’un jeton réel :

| Fournisseur d’identité | Où trouver la valeur `sub`                                                                                                                                                                                                                                                                                                                                                                                       |
| ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Microsoft Entra ID     | L’**Object ID** du principal de service, disponible sous **Enterprise Applications** dans le [centre d’administration Microsoft Entra](https://entra.microsoft.com). Utilisez l’Object ID de l’**Enterprise Application** (principal de service), et non l’Object ID de l’**App registration**. Pour les jetons app-only (client credentials), il s’agit généralement de la valeur qu’Entra ID place dans `sub`. |
| Google Cloud (GCP)     | La valeur `sub` du jeton d’identité que Google émet pour le compte de service.                                                                                                                                                                                                                                                                                                                                   |
