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

# Utiliser des noms d’organisation dans les API Authentication

> Configuration, considérations de sécurité et meilleures pratiques pour l’utilisation des noms d’organisations dans l’Authentication API.

export const AuthCodeBlock = ({filename, icon, language, highlight, children}) => {
  const [displayText, setDisplayText] = useState(children);
  const [copyText, setCopyText] = useState(children);
  const wrapperRef = React.useRef(null);
  useEffect(() => {
    let unsubscribe = null;
    function init() {
      if (!window.autorun || !window.rootStore) {
        return;
      }
      unsubscribe = window.autorun(() => {
        let processedChildrenForDisplay = children;
        let processedChildrenForCopy = children;
        for (const [key, value] of window.rootStore.variableStore.values.entries()) {
          const escapedKey = key.replaceAll(/[.*+?^${}()|[\]\\]/g, (String.raw)`\$&`);
          let displayValue = value;
          if (key === "{yourClientSecret}" && value !== "{yourClientSecret}") {
            displayValue = value.substring(0, 3) + "*****MASKED*****";
          }
          processedChildrenForDisplay = processedChildrenForDisplay.replaceAll(new RegExp(escapedKey, "g"), displayValue);
          processedChildrenForCopy = processedChildrenForCopy.replaceAll(new RegExp(escapedKey, "g"), value);
        }
        setDisplayText(processedChildrenForDisplay);
        setCopyText(processedChildrenForCopy);
      });
    }
    if (window.rootStore) {
      init();
    } else {
      window.addEventListener("adu:storeReady", init);
    }
    return () => {
      window.removeEventListener("adu:storeReady", init);
      unsubscribe?.();
    };
  }, [children]);
  useEffect(() => {
    if (!wrapperRef.current) return;
    const originalWriteText = navigator.clipboard.writeText.bind(navigator.clipboard);
    let isOverriding = false;
    const handleClick = e => {
      const button = e.target.closest('[data-testid="copy-code-button"]');
      if (!button || !wrapperRef.current.contains(button)) return;
      isOverriding = true;
      navigator.clipboard.writeText = text => {
        if (isOverriding) {
          isOverriding = false;
          navigator.clipboard.writeText = originalWriteText;
          return originalWriteText(copyText);
        }
        return originalWriteText(text);
      };
      setTimeout(() => {
        if (isOverriding) {
          isOverriding = false;
          navigator.clipboard.writeText = originalWriteText;
        }
      }, 100);
    };
    const wrapper = wrapperRef.current;
    wrapper.addEventListener('click', handleClick, true);
    return () => {
      wrapper.removeEventListener('click', handleClick, true);
      if (navigator.clipboard.writeText !== originalWriteText) {
        navigator.clipboard.writeText = originalWriteText;
      }
    };
  }, [copyText]);
  return <div ref={wrapperRef}>
      <CodeBlock filename={filename} icon={icon} language={language} lines highlight={highlight}>
        {displayText}
      </CodeBlock>
    </div>;
};

Par défaut, [Authentication API](https://auth0.com/docs/api/authentication) utilise les identifiants d’organisation pour identifier des organisations spécifiques. Si nécessaire, vous pouvez configurer votre locataire pour qu’il utilise également les noms des organisations comme identifiant. Toutefois, avant d’activer cette fonction, il convient de prendre en compte les implications en termes d’utilisation et de sécurité. Pour mieux comprendre l’impact potentiel, consultez la section [Considérations et recommandations](#considerations-and-recommendations).

## Fonctionnement

La configuration de votre locataire pour prendre en charge les noms d’organisation dans l’Authentication API donne les résultats suivants :

* Le paramètre `organization` dans les points de terminaison [/authorize](https://auth0.com/docs/api/authentication#authorize-application) et [SAML](https://auth0.com/docs/api/authentication#saml) peut accepter à la fois les noms d’organisation et les identifiants.
* Les jetons d’accès et d’ID incluent automatiquement les demandes `org_name` et `org_id`.

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  - Les [organisations](/docs/fr-ca/manage-users/organizations/configure-organizations/create-organizations) peuvent être configurées avec deux noms : une valeur de Nom requise traitée par le serveur comme un identifiant unique, et un Nom d’affichage facile pour l’utilisateur, facultatif. Le paramètre `org_name` n’accepte que la valeur de Nom requise et ne prend pas en charge pas les valeurs de Nom d’affichage.
  - Cette fonctionnalité est gérée au niveau du locataire. Elle ne peut être activé individuellement pour des organisations spécifiques.
</Callout>

Vous pouvez activer cette fonctionnalité via votre <Tooltip href="/docs/fr-ca/glossary?term=auth0-dashboard" tip="Auth0 Dashboard
Principal produit d’Auth0 pour configurer vos services." cta="Voir le glossaire">Auth0 Dashboard</Tooltip> (Tableau de bord Auth0) ou <Tooltip href="/docs/fr-ca/glossary?term=management-api" tip="Management API
Un produit permettant aux clients d’effectuer des tâches administratives." cta="Voir le glossaire">Management API</Tooltip> :

* **Auth0 Dashboard** : Sélectionnez [Paramètres](/docs/fr-ca/get-started/tenant-settings) dans le menu de gauche et choisissez l’onglet **Avancé**. Dans la section **Réglages**, activez la bascule **Autoriser les noms d’organisation dans Authentication API**.
* **Management API** : Utilisez le point de terminaison `PATCH /api/v2/tenants/settings` pour définir `allow_organization_name_in_authentication_api` sur `true`. Pour plus d’informations, consultez la documentation [Management API](https://auth0.com/docs/api/management/v2).

### Exemple de flux

L’exemple suivant illustre un flux Codes d’autorisation qui utilise des noms d’organisation.

1. Appelez le point de terminaison `/authorize` en indiquant le nom de votre organisation comme paramètre `organization` :

export const codeExample1 = `https://{yourDomain}/authorize?
    response_type=code&
    client_id={yourClientId}&
    redirect_uri={https://yourApp/callback}&
    scope={scope}&
    state={state}&
    organization={yourOrganizationName}`;

<AuthCodeBlock children={codeExample1} language="text" lines />

2. Après avoir obtenu le code d’autorisation, appeler le point de terminaison `POST /oauth/token` pour récupérer les jetons d’accès et d’ID :

export const codeExample2 = `curl --request POST \
  --url 'https://{yourDomain}/oauth/token' \
  --header 'content-type: application/x-www-form-urlencoded' \
  --data grant_type=authorization_code \
  --data 'client_id={yourClientId}' \
  --data 'client_secret={yourClientSecret}' \
  --data 'code=yourAuthorizationCode}' \
  --data 'redirect_uri={https://yourApp/callback}'`;

<AuthCodeBlock children={codeExample2} language="bash" />

3. Les jetons décodés renvoyés contiennent à la fois les revendications `org_id` et `org_name` :

```json lines theme={null}
{
    "sub": "google-oauth2|10...17",
    "aud": [
        "https://yourApp"
    ],
    "iat": 1686840988,
    "exp": 1686927388,
    "azp": "Suo...qTd",
    "scope": "openid profile",
    "org_id": "{yourOrganizationId}",
    "org_name": "{yourOrganizationName}"
}
```

## Considérations et recommandations

Avant d’utiliser les noms d’organisations dans l’Authentication API, il est important de comprendre les principales différences entre les noms d’organisations et les identifiants.

Contrairement aux identifiants des organisations (qui restent statiques), vous pouvez modifier le nom d’une organisation à tout moment après sa création initiale. En outre, vous pouvez réutiliser les noms d’organisation au sein d’un même locataire, à condition qu’ils ne soient attribués qu’à **exactement une** organisation à la fois. En pratique, cela signifie que vous pouvez changer le nom d’une de vos organisations et réutiliser son nom d’origine pour une autre organisation de votre locataire. Les noms d’organisations ne sont uniques qu’au sein d’un même locataire; le même nom peut être utilisé pour deux ou plusieurs organisations dans plusieurs locataires.

En général, il est recommandé d’utiliser les identifiants des organisations lors de la validation des jetons. Toutefois, si l’utilisation de noms d’organisations est plus appropriée pour votre cas d’utilisation, tenez compte des implications ci-dessous lors de la implémentation de la fonctionnalité.

### Facilité d’utilisation et considérations de sécurité

Tenez compte des incidences potentielles ci-dessous lorsque vous utilisez des noms d’organisations pour demander et valider des jetons :

* **Les noms d’organisation peuvent être réutilisés** : Les jetons à longue durée de vie n’expirent pas lorsqu’une organisation change de nom, et les revendications org\_name de ces jetons conservent leur valeur initiale. Si le nom d’origine est réutilisé par la suite par une autre organisation, ces jetons peuvent donner aux utilisateurs un accès non autorisé aux données et aux ressources gérées par la nouvelle organisation.
* **Les noms d’organisation ne sont uniques qu’au sein d’un même locataire** : Si votre API ne vérifie pas les revendications `iss` (émetteur) dans les jetons, une organisation portant le même nom dans un autre locataire pourrait générer des jetons qui seraient incorrectement acceptés par votre API.
* **Les noms des organisations peuvent être modifiés** : Si vous changez le nom d’une organisation, vos applications doivent fournir le nouveau nom de l’organisation dans les demandes à l’Authentication API. Comme les jetons peuvent avoir une longue durée de vie, la demande `org_name` d’un jeton peut ne plus correspondre au nom actuel de l’organisation, ce qui pourrait empêcher les applications d’accorder l’accès à l’organisation appropriée.

### Meilleures pratiques recommandées

En raison de l’impact possible sur la sécurité et la facilité d’utilisation, il est recommandé d’utiliser des identifiants plutôt que des noms pour valider les jetons lorsque l’on travaille avec des organisations. Si vous choisissez d’utiliser des noms d’organisations, suivez les bonnes pratiques ci-dessous pour une expérience optimale :

* Validez toujours la demande `iss` pour vous assurer qu’un jeton a été émis par votre locataire Auth0.
* Évitez de réutiliser des noms d’organisations qui existaient déjà dans votre locataire. Afin d’éviter la réutilisation et de garantir que les jetons précédemment émis ne puissent pas être utilisés pour accéder à différentes organisations, il convient de conserver un registre précis et actualisé des noms des organisations historiques.
* Évitez de renommer les organisations une fois qu’elles sont utilisées, sauf en cas d’absolue nécessité. Si vous décidez de renommer une organisation, sachez que les jetons d’accès et d’ID existants ne contiennent pas automatiquement le nouveau nom de l’organisation. Après avoir renommé une organisation, veillez à inviter les utilisateurs à se reconnecter.
