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

> Configuration, considérations relatives à la sécurité et pratiques exemplaires pour utiliser les noms d’organisation dans l’Authentication API.

# Utiliser les noms d’organisation 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) + "*****MASQUÉ*****";
          }
          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, l’[Authentication API](https://auth0.com/docs/api/authentication) utilise les ID d’organisation pour identifier des organizations précises. Au besoin, vous pouvez configurer votre tenant pour qu’il utilise aussi les noms d’organisation comme identifiant. Cependant, l’activation de cette fonctionnalité a des implications sur le plan de l’ergonomie et de la sécurité dont vous devez tenir compte. Pour mieux comprendre les répercussions possibles, consultez la section [considérations et recommandations](#considerations-and-recommendations).

<div id="how-it-works">
  ## Comment ça fonctionne
</div>

La configuration de votre tenant pour prendre en charge les noms d’organisation dans l’Authentication API a les effets 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 ID.
* Les jetons d’accès et les <Tooltip tip="ID Token : informations d’identification destinées au client lui-même, plutôt qu’à l’accès à une ressource." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=ID+tokens">jetons ID</Tooltip> incluent automatiquement les claims `org_name` et `org_id`.

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  - Les [Organizations](/docs/fr-ca/manage-users/organizations/configure-organizations/create-organizations) peuvent être configurées avec deux noms : une valeur Name obligatoire qui sert d’identifiant logique unique, et une valeur Display Name facultative, plus conviviale. Le paramètre `org_name` accepte uniquement la valeur Name obligatoire et ne prend pas en charge les valeurs Display Name.
  - Cette fonctionnalité est gérée au niveau du tenant. Elle ne peut pas être activée individuellement pour certaines Organizations.
</Callout>

Vous pouvez activer cette fonctionnalité dans votre <Tooltip tip="Auth0 Dashboard : principal produit d’Auth0 pour configurer vos services." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=Auth0+Dashboard">Auth0 Dashboard</Tooltip> ou au moyen de la <Tooltip tip="Auth0 Dashboard : principal produit d’Auth0 pour configurer vos services." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=Management+API">Management API</Tooltip> :

* **Auth0 Dashboard** : Sélectionnez [Settings](/docs/fr-ca/get-started/tenant-settings) dans le menu de gauche, puis choisissez l’onglet **Advanced**. Dans la section **Settings**, activez la bascule **Allow Organization Names in Authentication API**.
* **Management API** : Utilisez le point de terminaison `PATCH /api/v2/tenants/settings` pour définir `allow_organization_name_in_authentication_api` à `true`. Pour en savoir plus, consultez la documentation de la [Management API](https://auth0.com/docs/api/management/v2).

<div id="example-flow">
  ### Exemple de flux
</div>

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

1. Effectuez une requête vers le point de terminaison `/authorize` en indiquant le nom de votre organisation dans le 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="http" />

2. Après avoir obtenu le code d’autorisation, appelez le point de terminaison `POST /oauth/token` pour récupérer les jetons d’accès et les jetons 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 comprennent à la fois les claims `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}"
}
```

<div id="considerations-and-recommendations">
  ## Considérations et recommandations
</div>

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

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

En général, il est recommandé d’utiliser les ID d’organisation lors de la validation des jetons. Toutefois, si l’utilisation de noms d’organisation convient mieux à votre cas d’utilisation, tenez compte des implications ci-dessous lors de la mise en œuvre de cette fonctionnalité.

<div id="usability-and-security-considerations">
  ### Considérations relatives à la facilité d’utilisation et à la sécurité
</div>

Tenez compte des impacts potentiels ci-dessous lorsque vous utilisez des noms d’organisation pour demander et valider des jetons :

* **Les noms d’organisation peuvent être réutilisés** : Les jetons de longue durée n’expirent pas lorsqu’une organisation change de nom, et les claims `org_name` dans ces jetons conservent leur valeur d’origine. Si le nom d’origine est réutilisé plus tard par une autre organisation, ces jetons peuvent accorder 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 tenant** : Si votre API ne vérifie pas les claims `iss` (issuer) dans les jetons, une organisation portant le même nom dans un autre tenant pourrait générer des jetons qui seraient acceptés à tort par votre API.
* **Les noms d’organisation peuvent être modifiés** : Si vous modifiez le nom d’une organisation, vos applications doivent fournir le nouveau nom d’organisation dans les requêtes à l’Authentication API. Comme les jetons peuvent être de longue durée, le claim `org_name` dans 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.

<div id="recommended-best-practices">
  ### Pratiques exemplaires recommandées
</div>

En raison des répercussions possibles sur la sécurité et la convivialité, il est recommandé d’utiliser des IDs plutôt que des noms pour valider les jetons lorsque vous travaillez avec des organisations. Si vous choisissez d’utiliser des noms d’organisation, suivez les pratiques exemplaires ci-dessous pour une expérience optimale :

* Validez toujours la claim `iss` pour vous assurer qu’un jeton a été émis par votre tenant Auth0.
* Évitez de réutiliser des noms d’organisation qui ont déjà existé dans votre tenant. Pour éviter leur réutilisation et vous assurer que des jetons émis auparavant ne puissent pas servir à accéder à d’autres organisations, tenez un registre exact et à jour des anciens noms d’organisation.
* Évitez de renommer des organisations une fois qu’elles sont utilisées, sauf en cas de nécessité absolue. Si vous choisissez de renommer une organisation, sachez que les jetons d’accès et les jetons ID existants n’incluent pas automatiquement le nouveau nom de l’organisation. Après avoir renommé une organisation, assurez-vous de demander aux utilisateurs de se connecter de nouveau.
