> ## Documentation Index
> Fetch the complete documentation index at: https://wb-21fd5541-wbdocs-1882.mintlify.site/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 avec les identifiants de votre organisation via le SDK W\&B. Si l’administrateur de l’organisation W\&B a configuré le SSO pour votre organisation, vous utilisez déjà les identifiants de votre organisation pour vous connecter à l’interface de l’application W\&B. En ce sens, la fédération d’identités s’apparente au SSO pour le SDK W\&B, mais en utilisant directement des JSON Web Tokens (JWT). Vous pouvez utiliser la fédération d’identités comme alternative aux clés API.

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>Dans ce document, les termes `fournisseur d’identité` et `émetteur JWT` sont utilisés de manière interchangeable. Ils désignent tous deux une seule et même chose dans le contexte de cette fonctionnalité.</Note>

<div id="jwt-issuer-setup">
  ## Configuration de l’émetteur JWT
</div>

Dans un premier temps, un administrateur de l’organisation doit configurer une fédération entre votre organisation W\&B et un émetteur JWT publiquement accessible.

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

W\&B recherchera automatiquement un document de découverte OIDC à l’emplacement `${ISSUER_URL}/.well-known/openid-configuration`, et essaiera de trouver le JSON Web Key Set (JWKS) à l’URL appropriée dans le document de découverte. Le JWKS est utilisé pour la validation en temps réel des JWT afin de garantir qu’ils ont été émis par le fournisseur d’identité concerné.

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

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

* Vous devez vous connecter au fournisseur d’identité à l’aide de l’un des mécanismes disponibles dans votre organisation. Certains fournisseurs sont accessibles de manière automatisée via une API ou un SDK, tandis que d’autres ne sont accessibles que via l’interface utilisateur appropriée. Contactez l’administrateur de votre organisation W\&B ou le propriétaire de l’émetteur JWT pour plus de détails.
* Une fois le JWT récupéré après connexion à votre fournisseur d’identité, stockez-le dans un fichier situé dans un emplacement sécurisé et configurez le chemin absolu de ce fichier dans une variable d’environnement `WANDB_IDENTITY_TOKEN_FILE`.
* Accédez à votre projet W\&B à l’aide du SDK ou de la CLI W\&B. Le SDK ou la CLI doit détecter automatiquement le JWT et l’échanger contre un jeton d’accès W\&B une fois le JWT validé avec succès. Le jeton d’accès W\&B est utilisé pour accéder aux API concernées afin de prendre en charge vos flux de travail d’IA, c’est-à-dire pour journaliser des runs, des métriques, des artifacts, etc. Le jeton d’accès est stocké par défaut dans `~/.config/wandb/credentials.json`. Vous pouvez modifier ce chemin en spécifiant la variable d’environnement `WANDB_CREDENTIALS_FILE`.

<Note>
  Les JWT sont conçus comme des identifiants de courte durée pour remédier aux limites des identifiants de longue durée, comme les clés API, les mots de passe, etc. Selon la durée d’expiration du JWT configurée dans votre fournisseur d’identité, vous devez actualiser régulièrement le JWT et vous assurer 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 d’expiration par défaut, après laquelle le SDK ou la CLI essaie automatiquement de l’actualiser à l’aide de votre JWT. Si le JWT utilisateur a lui aussi expiré à ce moment-là et n’est pas actualisé, cela peut entraîner un échec d’authentification. Si possible, le mécanisme de récupération du JWT et de rafraîchissement après expiration doit être implémenté dans la charge de travail d’IA qui utilise le SDK ou la CLI W\&B.
</Note>

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

Dans le cadre du flux de travail consistant à échanger un JWT contre un jeton d'accès W\&B, puis à accéder à un projet, le JWT fait l'objet des validations suivantes :

* La signature du JWT est vérifiée à 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.

* En règle générale, 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.

* Le claim `exp` du JWT est vérifié 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 depuis longtemps en charge des comptes de service intégrés avec des clés API de longue durée. Grâce à la fonctionnalité de fédération d’identités pour le SDK et la CLI, vous pouvez également utiliser des comptes de service externes pouvant s’authentifier avec des JWT, à condition qu’ils soient émis par le même émetteur que celui configuré au niveau de l’organisation. Un administrateur d’é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 :

* Accédez à l’onglet **Service Accounts** de votre équipe
* Cliquez sur **New service account**
* Saisissez un nom pour le compte de service, sélectionnez `Federated Identity` comme `Authentication Method`, indiquez un `Subject`, puis cliquez sur **Create**

La claim `sub` dans le JWT du compte de service externe doit correspondre à celle que l’administrateur d’équipe configure comme sujet dans l’onglet **Service Accounts** au niveau de l’équipe. Cette claim est vérifiée dans le cadre de la [Validation des JWT](#jwt-validation). L’exigence relative à la claim `aud` est similaire à celle des JWT d’utilisateurs humains.

Lorsque vous [utilisez le JWT d’un compte de service externe pour accéder à W\&B](#using-the-jwt-to-access-wb), il est généralement plus simple d’autatiser le flux de travail pour générer le JWT initial et le renouveler en continu. Si vous souhaitez attribuer les Runs enregistrés à l’aide d’un compte de service externe à un utilisateur humain, vous pouvez configurer 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 une combinaison 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, afin de trouver un équilibre entre flexibilité et simplicité.
</Note>
