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

# Flux de mot de passe du propriétaire de ressource avec OIDC

> Découvrez comment le pipeline conforme à l’OIDC affecte le flux de mot de passe du propriétaire de la ressource.

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

Le [Flux de mot de passe du propriétaire de ressource](/docs/fr-ca/get-started/authentication-and-authorization-flow/resource-owner-password-flow) (parfois appelé consentement de mot de passe du propriétaire de la ressource ou ROPG) est utilisé par des applications hautement fiables pour fournir une authentification active. Contrairement au code d’autorisation et aux consentements implicites, ce mécanisme d’authentification ne redirige pas les utilisateurs vers Auth0. Il authentifie les utilisateurs avec une seule demande, en échangeant leurs informations d’identification de mot de passe contre un jeton.

Le pipeline conforme à l’OIDC affecte le flux de mot de passe du propriétaire de ressource dans les domaines suivants :

* Demande d’authentification
* Réponse d’authentification
* Structure des jetons d’ID
* Structure des jetons d’accès

## Demande d’authentification

### Hérité

```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 jeton d’actualisation en transmettant la permission `offline_access`.

### Conformité OIDC

```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 exécuter les échanges d’informations d’identification est `/oauth/token`.
* Le type de consentement propre à Auth0 est utilisé pour authentifier les utilisateurs à partir d’une connexion spécifique (`realm`). Le consentement de mot de passe OIDC standard est également pris en charge, mais il n’accepte pas les paramètres spécifiques à Auth0 tels que `realm`.
* `favorite_color` n’est plus une permission valide.
* Le paramètre `device` est retiré.
* Le paramètre `audience` est facultatif.

## Réponse d’authentification

### Hérité

```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 renvoyé n’est valide que pour appeler le point de terminaison [`/userinfo`](/docs/fr-ca/api/authentication#get-user-info).
* Un jeton d’actualisation sera renvoyé uniquement si un paramètre `device` a été transmis et que la permission `offline_access` a été demandée.

### Conformité OIDC

```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 appeler le point de terminaison `/userinfo` (à condition que l’API spécifiée par le paramètre `audience` utilise `RS256` en tant qu’[algorithme de signature](/docs/fr-ca/get-started/applications/signing-algorithms)) et éventuellement le serveur de ressources spécifié par le paramètre `audience`.
* Le jeton d’ID sera signé de force à l’aide de `RS256` si une application publique le demande. Pour en savoir plus, lisez [Applications confidentielles et publiques](/docs/fr-ca/get-started/applications/confidential-and-public-applications).
* Un jeton d’actualisation sera renvoyé uniquement si la permission `offline_access` a été accordée.

## Structure de jeton d’ID

### Hérité

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" />

### Conformité OIDC

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" />

* Le jeton d’ID sera signé de force à l’aide de `RS256` si une application publique le demande.
* La demande `favorite_color` doit être spécifiée dans un espace de noms et ajoutée par le biais d’une règle. Pour en savoir plus, veuillez consulter [Créer des demandes personnalisées avec espace de noms](/docs/fr-ca/secure/tokens/json-web-tokens/create-custom-claims).

## Structure des jetons d’accès (facultatif)

### Hérité

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

Le jeton d’accès renvoyé est opaque et n’est valide que pour appeler le point de terminaison `/userinfo`.

### Conformité OIDC

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" />

* Le jeton d’accès renvoyé est un <Tooltip href="/docs/fr-ca/glossary?term=json-web-token" tip="Jeton Web JSON (JWT)
  Format standard de jeton d’ID (et souvent de jeton d’accès) utilisé pour représenter en toute sécurité des demandes entre deux parties." cta="Voir le glossaire">JWT</Tooltip> valide pour appeler le point de terminaison `/userinfo` (à condition que l’API spécifiée par le paramètre `audience` utilise `RS256` en tant qu’algorithme de signature) et éventuellement le serveur de ressources spécifié par le paramètre `audience`.
* Notez qu’un jeton d’accès opaque peut toujours être renvoyé si `/userinfo` est la seule <Tooltip data-tooltip-id="react-containers-DefinitionTooltip-1" tip="">audience</Tooltip> spécifiée.

## Demandes d’attribution de mot de passe standard

Le consentement de domaine de mot de passe Auth0 n’est pas défini en standard par OIDC, mais il est suggéré comme alternative au point de terminaison du propriétaire de la ressource héritée, car il prend en charge le paramètre `realm` spécifique à Auth0. Le [flux OIDC standard est également pris en charge](/docs/fr-ca/get-started/authentication-and-authorization-flow/resource-owner-password-flow) lors de l’utilisation de l’authentification OIDC.

## En savoir plus

* [Jetons d’ accès avec OpenID Connect (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 des identifiants 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)
