> ## 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.

> Découvrez comment le pipeline conforme à OIDC influe sur le flux Resource Owner Password (ROP).

# Flux Resource Owner Password avec OIDC

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>;
};

Le [Resource Owner Password Flow](/docs/fr-ca/get-started/authentication-and-authorization-flow/resource-owner-password-flow) (parfois appelé <Tooltip tip="Resource Owner : entité (comme un utilisateur ou une application) capable d’accorder l’accès à une ressource protégée." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=Resource+Owner">Resource Owner</Tooltip> Password Grant ou ROPG) est utilisé par des applications hautement dignes de confiance pour effectuer une authentification active. Contrairement au code d’autorisation et aux octrois implicites, ce mécanisme d’authentification ne redirige pas les utilisateurs vers Auth0. Il authentifie les utilisateurs au moyen d’une seule requête, en échangeant leurs identifiants et leur mot de passe contre un jeton.

Le pipeline conforme à OIDC affecte le Resource Owner Password Flow dans les domaines suivants :

* Requête d’authentification
* Réponse d’authentification
* Structure du <Tooltip tip="ID Token : information d’identification destinée au client lui-même, plutôt que pour accéder à une ressource." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=ID+token">jeton d’ID</Tooltip>
* Structure du <Tooltip tip="Access Token : information d’autorisation d’accès, sous la forme d’une chaîne opaque ou d’un JWT, utilisée pour accéder à une API." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=Access+token">jeton d’accès</Tooltip>

<div id="authentication-request">
  ## Requête d’authentification
</div>

<div id="legacy">
  ### Ancienne version
</div>

```json lines theme={null}
POST /oauth/ro HTTP 1.1
Content-Type: application/json
{
  "grant_type": "password",
  "client_id": "123",
  "username": "alice",
  "password": "A3ddj3w",
  "connection": "my-database-connection",
  "scope": "openid email favorite_color offline_access",
  "device": "my-device-name"
}
```

Le paramètre `device` n’est nécessaire que si vous demandez un <Tooltip tip="Refresh Token : jeton utilisé pour obtenir un nouveau jeton d’accès sans obliger les utilisateurs à se connecter de nouveau." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=refresh+token">refresh token</Tooltip> en incluant la portée `offline_access`.

<div id="oidc-conformant">
  ### Conforme à OIDC
</div>

```json lines theme={null}
POST /oauth/token HTTP 1.1
Content-Type: application/x-www-form-urlencoded
grant_type=http%3A%2F%2Fauth0.com%2Foauth%2Fgrant-type%2Fpassword-realm&client_id=123&username=alice&password=A3ddj3w&realm=my-database-connection&scope=openid+email+offline_access&audience=https%3A%2F%2Fapi.example.com
```

* Le point de terminaison pour effectuer les échanges d’identifiants est `/oauth/token`.
* Le grant type propre à Auth0 est utilisé pour authentifier les utilisateurs d’une connexion précise (`realm`). Le grant de mot de passe OIDC standard est aussi pris en charge, mais il n’accepte pas les paramètres propres à Auth0, comme `realm`.
* `favorite_color` n’est plus un scope valide.
* Le paramètre `device` a été supprimé.
* Le paramètre `audience` est facultatif.

<div id="authentication-response">
  ## Réponse d’authentification
</div>

<div id="legacy">
  ### Ancienne version
</div>

```json lines theme={null}
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
Pragma: no-cache
{
    "access_token": "SlAV32hkKG",
    "token_type": "Bearer",
    "refresh_token": "8xLOxBtZp8",
    "expires_in": 3600,
    "id_token": "eyJ..."
}
```

* Le jeton d’accès retourné est valide uniquement pour appeler le point de terminaison [`/userinfo`](https://auth0.com/docs/api/authentication#get-user-info).
* Un jeton d’actualisation sera retourné seulement si un paramètre `device` a été transmis et si la portée `offline_access` a été demandée.

<div id="oidc-conformant">
  ### Conforme à OIDC
</div>

```json lines theme={null}
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
Pragma: no-cache
{
    "access_token": "eyJ...",
    "token_type": "Bearer",
    "refresh_token": "8xLOxBtZp8",
    "expires_in": 3600,
    "id_token": "eyJ..."
}
```

* Le jeton d’accès renvoyé est valide pour effectuer une requête vers le endpoint `/userinfo` (à condition que l’API précisée par le paramètre `audience` utilise `RS256` comme [algorithme de signature](/docs/fr-ca/get-started/applications/signing-algorithms)) et, au besoin, vers le <Tooltip tip="Serveur de ressources : serveur hébergeant des ressources protégées. Les serveurs de ressources acceptent les requêtes visant des ressources protégées et y répondent." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=resource+server">serveur de ressources</Tooltip> précisé par le paramètre `audience`.
* Le jeton d’ID sera obligatoirement signé avec `RS256` s’il est demandé par une application publique. Pour en savoir plus, consultez [Applications confidentielles et publiques](/docs/fr-ca/get-started/applications/confidential-and-public-applications).
* Un jeton d’actualisation sera renvoyé seulement si la portée `offline_access` a été accordée.

<div id="id-token-structure">
  ## Structure du jeton d’ID
</div>

### ancienne version

export const codeExample1 = `{
    "sub": "auth0|alice",
    "iss": "https://{yourDomain}/",
    "aud": "123",
    "exp": 1482809609,
    "iat": 1482773609,
    "email": "alice@example.com",
    "email_verified": true,
    "favorite_color": "blue"
}`;

<AuthCodeBlock children={codeExample1} language="json" filename="JSON" />

<div id="oidc-conformant">
  ### Conforme à OIDC
</div>

export const codeExample2 = `{
    "sub": "auth0|alice",
    "iss": "https://{yourDomain}/",
    "aud": "123",
    "exp": 1482809609,
    "iat": 1482773609,
    "email": "alice@example.com",
    "email_verified": true,
    "https://app.example.com/favorite_color": "blue"
}`;

<AuthCodeBlock children={codeExample2} language="json" filename="JSON" />

* Le jeton d’ID sera obligatoirement signé avec `RS256` s’il est demandé par une application publique.
* La revendication `favorite_color` doit être associée à un espace de noms et ajoutée au moyen d’une règle. Pour en savoir plus, consultez [Create Namespaced Custom Claims](/docs/fr-ca/secure/tokens/json-web-tokens/create-custom-claims).

<div id="access-token-structure-optional">
  ## Structure du jeton d’accès (facultatif)
</div>

<div id="legacy">
  ### Ancienne version
</div>

```json JSON lines theme={null}
SlAV32hkKG
```

Le jeton d’accès renvoyé est opaque et n’est valide que pour effectuer une requête au point de terminaison `/userinfo`.

<div id="oidc-conformant">
  ### Conforme à OIDC
</div>

export const codeExample3 = `{
    "sub": "auth0|alice",
    "iss": "https://{yourDomain}/",
    "aud": [
        "https://api.example.com",
        "https://{yourDomain}/userinfo"
    ],
    "azp": "123",
    "exp": 1482816809,
    "iat": 1482809609,
    "scope": "openid email"
}`;

<AuthCodeBlock children={codeExample3} language="json" filename="JSON" />

* Le jeton d’accès renvoyé est un <Tooltip tip="JSON Web Token (JWT) : format standard de ID Token (et souvent de jeton d’accès) utilisé pour représenter des claims de manière sécurisée entre deux parties." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=JWT">JWT</Tooltip> valide pour envoyer une requête au point de terminaison `/userinfo` (à condition que l’API spécifiée par le paramètre `audience` utilise `RS256` comme <Tooltip tip="Algorithme de signature : algorithme utilisé pour signer numériquement des jetons afin de garantir que le jeton n’a pas été altéré." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=signing+algorithm">algorithme de signature</Tooltip>), ainsi qu’au serveur de ressources spécifié par le paramètre `audience`.
* Notez qu’un jeton d’accès opaque peut tout de même être renvoyé si `/userinfo` est la seule <Tooltip tip="Audience : identifiant unique de l’audience pour un jeton émis. Nommée aud dans un jeton, sa valeur contient l’ID d’une application (Client ID) pour un ID Token ou d’une API (API Identifier) pour un jeton d’accès." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=audience">audience</Tooltip> spécifiée.

<div id="standard-password-grant-requests">
  ## Requêtes standard d’octroi par mot de passe
</div>

L’octroi par mot de passe avec `realm` d’Auth0 n’est pas défini par la norme OIDC, mais il est proposé comme solution de rechange au point de terminaison Resource Owner existant, car il prend en charge le paramètre `realm` propre à Auth0. Le [flux OIDC standard est également pris en charge](/docs/fr-ca/get-started/authentication-and-authorization-flow/resource-owner-password-flow) lorsque l’authentification OIDC est utilisée.

<div id="learn-more">
  ## Pour en savoir plus
</div>

* [Jetons d’accès avec OIDC](/docs/fr-ca/authenticate/login/oidc-conformant-authentication/oidc-adoption-access-tokens)
* [API externes avec OIDC](/docs/fr-ca/authenticate/login/oidc-conformant-authentication/oidc-adoption-apis)
* [Flux de code d’autorisation avec OIDC](/docs/fr-ca/authenticate/login/oidc-conformant-authentication/oidc-adoption-auth-code-flow)
* [Flux d’identifiants du client avec OIDC](/docs/fr-ca/authenticate/login/oidc-conformant-authentication/oidc-adoption-client-credentials-flow)
* [Flux implicite avec OIDC](/docs/fr-ca/authenticate/login/oidc-conformant-authentication/oidc-adoption-implicit-flow)
* [Jetons d’actualisation avec OIDC](/docs/fr-ca/authenticate/login/oidc-conformant-authentication/oidc-adoption-refresh-tokens)
