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

# API Clés d’identification natives

> Spécifications d’Auth0 Authentication API pour les clés d’identification natives

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Clés d’identification natives est actuellement proposé en accès anticipé limité. Pour en savoir plus sur les étapes de diffusion d’Auth0, consultez [Étapes de la diffusion du produit](/docs/fr-ca/troubleshoot/product-lifecycle/product-release-stages).
</Callout>

Par rapport aux formes traditionnelles d’authentification (telles que le nom d’utilisateur et le mot de passe), les clés d’identification offrent une solution de rechange efficace contre l’hameçonnage et permettent aux utilisateurs de profiter d’une expérience plus facile et plus sûre. Pour obtenir des détails complets sur la mise en œuvre, consultez [Clés d’identification natives pour les applications mobiles](/docs/fr-ca/native-passkeys-for-mobile-applications).

Les clés d’identification natives utilisent une combinaison d’API Auth0 et iOS ou Android natives pour intégrer les flux de défi-réponse directement dans votre application mobile. Les points de terminaison énumérés ci-dessous constituent un sous-ensemble de Authentication API et sont actuellement accessibles en accès anticipé limité. Pour en savoir plus sur l’utilisation de cette API, consultez la page [Introduction à Authentication API](https://auth0.com/docs/api/authentication#introduction).

## Flux d’inscription

### Demander un défi-réponse d’inscription

`POST /passkey/register`

Lance le flux d’inscription de la clé d’identification pour un nouvel utilisateur. En réponse, Auth0 renvoie [PublicKeyCredentialCreationOptions](https://www.w3.org/TR/webauthn-3/#dictdef-publickeycredentialcreationoptions) et un ID de session.

#### Paramètres de la demande

| Paramètres     | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `client_id`    | **Obligatoire**. `client_id` de votre application.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `realm`        | **Facultatif**. Le nom de la connexion à associer avec cet utilisateur.<br /><br />Le répertoire par défaut de votre locataire est utilisé si aucune connexion n’est précisée.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| `user_profile` | \_*Obligatoire*. Un objet contenant des informations d’identification pour l’utilisateur. Par défaut, cela inclut un `email` valide et un `name` d’affichage facultatif.<br /><br />Si vous avez activé les [identifiants flexibles](/docs/fr-ca/authenticate/database-connections/activate-and-configure-attributes-for-flexible-identifiers) pour votre connexion par base de données, vous pouvez utiliser une combinaison de `email`, `phone_number`, ou `username` comme identificateurs. Ces options peuvent être obligatoires ou facultatives et doivent correspondre à votre configuration d’identificateur flexible.<br /><br />Si l’identifiant transmis (tel que `email`) existe déjà dans le directory, l’utilisateur doit être invité à effectuer le flux de connexion. |

#### Exemples de code

##### Demande

```json lines theme={null}
POST /passkey/register
Content-Type: application/json

{
  "client_id": "<CLIENT_ID>",
  "realm": "<OPTIONAL_CONNECTION>",
  "user_profile": {
	  "email": "<VALID_EMAIL_ADDRESS>",
	  "name": "<OPTIONAL_USER_DISPLAY_NAME>",
  }
}
```

##### Réponse

```json lines theme={null}
HTTP/1.1 200 OK
Content-Type: application/json

{
  "authn_params_public_key": {
    "challenge": "<GENERATED_CHALLENGE_FOR_THIS_SESSION>",
    "timeout": <MILLISECONDS>,
    "rp": {
      "id": "<THE_CUSTOM_DOMAIN>",
      "name": "<THE_CUSTOM_DOMAIN>"
    },
    "pubKeyCredParams": [
      { type: 'public-key', alg: -8 },
      { type: 'public-key', alg: -7 },
      { type: 'public-key', alg: -257 }
    ],
    "authenticatorSelection": {
      "residentKey": "required",
      "userVerification": "preferred"
    },
    "user": {
      "id": "<GENERATED_ID>",
      "name": "<USER-ENTERED_IDENTIFIER>",
      "displayName": "<USER-ENTERED_DISPLAY_NAME_OR_IDENTIFIER_IF_MISSING>"
    }
  },
  "auth_session": "<SESSION_ID>"
}
```

#### Remarques

* Une fois la demande de défi-réponse terminée, votre application peut poursuivre le processus d’inscription des utilisateurs à l’aide des API natives [Android](https://developer.android.com/identity/sign-in/credential-manager#create-passkey) ou [iOS](https://developer.apple.com/documentation/authenticationservices/supporting-passkeys#Register-a-new-account-on-a-service).
* Vous devez ensuite [authentifier le nouvel utilisateur](#authenticate-new-user) à l’aide des informations récupérées par les API natives pour terminer le flux.

### Authentifier un nouvel utilisateur

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  L’enregistrement de clé d’identification native n’est actuellement pas pris en charge lorsque la vérification SMS/OTP par courriel est requise sur la même connexion lors d’une inscription.
</Callout>

`POST /oauth/token`

Utilise le point de terminaison du jeton pour authentifier l’utilisateur avec les informations d’identification fournies afin de créer son compte et de renvoyer les jetons demandés.

Le paramètre `authn_response` est basé sur la [Spécification de Web Authentication API](https://www.w3.org/TR/webauthn-3/). Dans le flux de clés d’identification natives, les informations transmises à ce point de terminaison sont récupérables par l’intermédiaire des API natives de votre application mobile :

* [Documentation d’inscription Android](https://developer.android.com/identity/sign-in/credential-manager#create-passkey)
* [Documentation d’inscription iOS](https://developer.apple.com/documentation/authenticationservices/supporting-passkeys#Register-a-new-account-on-a-service)

#### Paramètres de la demande

| Paramètres                               | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| ---------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `grant_type`                             | **Obligatoire**. Inclure la valeur : `urn:okta:params:oauth:grant-type:webauthn`                                                                                                                                                                                                                                                                                                                                                                               |
| `scope`                                  | **Facultatif**. Utiliser `openid` pour obtenir un jeton d’ID ou `openid profile email` pour inclure des informations de profil utilisateur dans le jeton d’ID.                                                                                                                                                                                                                                                                                                 |
| `audience`                               | **Facultatif**. Identifiant API de l’API pour laquelle vous souhaitez obtenir un jeton d’accès.                                                                                                                                                                                                                                                                                                                                                                |
| `auth_session`                           | **Obligatoire**. Identifiant de session retourné lors de la demande initiale de défi de clé d’identification.                                                                                                                                                                                                                                                                                                                                                  |
| `authn_response`                         | **Obligatoire**. Un objet contenant les éléments suivants :<ul><li>`id`</li><li>`rawId`</li><li>`type`</li><li>`authenticatorAttachment`</li><li>`response`</li></ul>                                                                                                                                                                                                                                                                                          |
| `authn_response.id`                      | **Obligatoire**. ID d’identification Base64URL.                                                                                                                                                                                                                                                                                                                                                                                                                |
| `authn_response.rawId`                   | **Obligatoire**. ID d’identification Base64URL.                                                                                                                                                                                                                                                                                                                                                                                                                |
| `authn_response.type`                    | **Obligatoire**. Inclure la valeur : `public-key`                                                                                                                                                                                                                                                                                                                                                                                                              |
| `authn_response.authenticatorAttachment` | **Obligatoire**. Inclure les valeurs :<ul><li>`platform`</li><li>`cross-platform`</li></ul>                                                                                                                                                                                                                                                                                                                                                                    |
| `authn_response.response`                | **Obligatoire**. Un objet contenant les éléments suivants : <ul><li>`clientDataJSON`: Contient la sérialisation compatible JSON des données client; héritée de [AuthenticatorResponse](https://www.w3.org/TR/webauthn-3/#authenticatorresponse).</li><li>`attestationObject`: Contient des données d’authentification et une déclaration d’attestation; héritée de [AuthenticatorResponse](https://www.w3.org/TR/webauthn-3/#authenticatorresponse).</li></ul> |

#### Exemples de code

##### Demande

```json lines theme={null}
POST /oauth/token
Content-Type: application/json

{
  "grant_type": "urn:okta:params:oauth:grant-type:webauthn",
  "client_id": "<CLIENT_ID>",
  "realm": "<OPTIONAL_CONNECTION>",
  "scope": "<OPTIONAL_REQUESTED_SCOPE>",
  "audience": "<OPTIONAL_REQUESTED_AUDIENCE>"
  "auth_session": "<SESSION_ID_FROM_THE_FIRST_REQUEST>",
  "authn_response": {
    "id": "<BASE64URL_ID>",
    "rawId": "<BASE64URL_RAWID>",
    "type": "public-key",
    "authenticatorAttachment": "platform|cross-platform",
    "response": {
      "clientDataJSON": "<BASE64URL_CLIENT_DATA_JSON>",
      "attestationObject": "<BASE64URL_ATTESTATION_OBJECT>",
      <OTHER_PROPERTIES>
    }  
}
```

##### Réponse

```json lines theme={null}
HTTP/1.1 200 OK
Content-Type: application/json

{
  "access_token": "<BASE64_TOKEN>",
  "refresh_token": "<BASE64_TOKEN>",
  "id_token": "<BASE64_TOKEN>",
  "token_type": "Bearer",
  "expires_in": <SECONDS>
}
```

## Flux de connexion

### Demander le défi-réponse de connexion

`POST /passkey/challenge`

Lance le processus de connexion à la clé d’identification pour un utilisateur existant qui a enregistré une clé d’identification sur son compte lors de son inscription initiale.

En réponse, Auth0 renvoie [PublicKeyCredentialRequestOptions](https://www.w3.org/TR/webauthn-3/#dictdef-publickeycredentialrequestoptions) et un identificateur de session.

#### Paramètres de la demande

| Paramètres  | Description                                                                                                                                                                  |
| ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `client_id` | **Obligatoire**. `client_id` de votre application.                                                                                                                           |
| `realm`     | **Facultatif**. Le nom de la connexion à associer avec l’utilisateur.<br /><br />Le répertoire par défaut de votre locataire est utilisé si aucune connexion n’est précisée. |

#### Exemples de code

##### Demande

```json lines theme={null}
POST /passkey/challenge
Content-Type: application/json

{
  "client_id": "<CLIENT_ID>",
  "realm": "<OPTIONAL_CONNECTION>"
}
```

##### Réponse

```json lines theme={null}
HTTP/1.1 200 OK
Content-Type: application/json

{
  "authn_params_public_key": {
    "challenge": "<GENERATED_CHALLENGE_FOR_THIS_SESSION>",
    "timeout": <AUTH_TIMEOUT_IN_MILLISECONDS>,
    "rpId": "<CUSTOM_DOMAIN>",
    "userVerification": "preferred"
  },
  "auth_session": "<SESSION_ID>"
}
```

#### Remarques

* Une fois la demande de défi-réponse terminée, votre application peut poursuivre le processus de connexion à l’aide des API natives [Android](https://developer.android.com/identity/sign-in/credential-manager#sign-in) ou [iOS](https://developer.apple.com/documentation/authenticationservices/supporting-passkeys#Connect-to-a-service-with-an-existing-account).
* Vous devrez ensuite [authentifier l’utilisateur existant](#authenticate-existing-user) à l’aide des informations récupérées via les API natives pour terminer le flux.

### Authentifier l’utilisateur existant

`POST /oauth/token`

Utilise le point de terminaison du jeton pour authentifier l’utilisateur avec les identifiants fournis et renvoyer les jetons demandés.

Le paramètre `authn_response` est basé sur la [Spécification de Web Authentication API](https://www.w3.org/TR/webauthn-3/). Dans le flux de clés d’identification natives, les informations transmises à ce point de terminaison sont récupérables par l’intermédiaire des API natives de votre application mobile :

* [Documentation de connexion Android](https://developer.android.com/identity/sign-in/credential-manager#sign-in)
* [Documentation de connexion iOS](https://developer.apple.com/documentation/authenticationservices/supporting-passkeys#Connect-to-a-service-with-an-existing-account)

#### Paramètres de la demande

| Paramètres                               | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| ---------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `grant_type`                             | **Obligatoire**. Inclure la valeur : `urn:okta:params:oauth:grant-type:webauthn`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| `scope`                                  | **Facultatif**. Utiliser `openid` pour obtenir un jeton d’ID ou `openid profile email` pour inclure des informations de profil utilisateur dans le jeton d’ID.                                                                                                                                                                                                                                                                                                                                                                                                         |
| `audience`                               | **Facultatif**. Identifiant API de l’API pour laquelle vous souhaitez obtenir un jeton d’accès.                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `auth_session`                           | **Obligatoire**. Identifiant de session retourné lors de la demande initiale de défi de clé d’identification.                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `authn_response`                         | **Obligatoire**. Un objet contenant les éléments suivants :<ul><li>`id`</li><li>`rawId`</li><li>`type`</li><li>`authenticatorAttachment`</li><li>`response`</li><li>`clientExtensionResults`</li></ul>                                                                                                                                                                                                                                                                                                                                                                 |
| `authn_response.id`                      | **Obligatoire**. ID d’identification Base64URL.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `authn_response.rawId`                   | **Obligatoire**. ID d’identification Base64URL.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `authn_response.type`                    | **Obligatoire**. Inclure la valeur : `public-key`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `authn_response.authenticatorAttachment` | **Obligatoire**. Inclure les valeurs :<ul><li>`platform`</li><li>`cross-platform`</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| `authn_response.response`                | **Obligatoire**. Un objet contenant les éléments suivants : <ul><li>`authenticatorData`: Contient les [données d’authentification](https://www.w3.org/TR/webauthn-3/#authenticator-data) renvoyées par l’authentificateur.</li><li>`clientDataJSON`: Contient la sérialisation compatible JSON des données client; héritée de [AuthenticatorResponse](https://www.w3.org/TR/webauthn-3/#authenticatorresponse).</li><li>`signature`: Signature Base64URL renvoyée par l’authentificateur.</li><li>`userHandle`: Identifiant Base64URL du compte utilisateur.</li></ul> |
| `authn_response.clientExtensionResults`  | **Facultatif**. Contient les résultats du traitement des extensions client demandées par la partie utilisatrice.                                                                                                                                                                                                                                                                                                                                                                                                                                                       |

#### Exemples de code

##### Demande

```json lines theme={null}
POST /oauth/token
Content-Type: application/json

{
  "grant_type": "urn:okta:params:oauth:grant-type:webauthn",
  "client_id": "<CLIENT_ID>",
  "realm": "<OPTIONAL_CONNECTION>",
  "scope": "<OPTIONAL_REQUESTED_SCOPE>",
  "audience": "<OPTIONAL_REQUESTED_AUDIENCE>"
  "auth_session": "<SESSION_ID_FROM_THE_FIRST_REQUEST>",
  "authn_response": {
    "id": "<BASE64URL_ID>",
    "rawId": "<BASE64URL_RAWID>",
    "type": "public-key",
    "authenticatorAttachment": "platform|cross-platform",
    "response": {
      "authenticatorData": "<BASE64URL_AUTHENTICATORDATA>",
      "clientDataJSON": "<BASE64URL_CLIENTDATAJSON>",
      "signature": "<BASE64URL_SIGNATURE>",
      "userHandle": "<BASE64URL_USERHANDLE>"
    },
    "clientExtensionResults": <OPTIONAL_OBJECT>
}
```

##### Réponse

```json lines theme={null}
HTTP/1.1 200 OK
Content-Type: application/json

{
  "access_token": "<BASE64_TOKEN>",
  "refresh_token": "<BASE64_TOKEN>",
  "id_token": "<BASE64_TOKEN>",
  "token_type": "Bearer",
  "expires_in": <SECONDS>
}
```
