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

# Enregistrer une clé de connexion de consentement

> Enregistrer une clé de connexion de consentement pour l’utilisateur authentifié. La clé sert à vérifier les décisions de consentement signées. Seule la clé publique est fournie ; la clé privée correspondante ne doit jamais quitter l’appareil.



## OpenAPI

````yaml docs/fr-ca/oas/myaccount/myaccount-api-oas.json POST /consent-signing-keys
openapi: 3.1.0
info:
  title: Mon compte
  version: '1.0'
  description: "L’API My Account d’Auth0 fournit un ensemble dédié de points de terminaison permettant aux utilisateurs de gérer les renseignements de leur propre compte. Les clients peuvent utiliser ces API pour créer des expériences libre-service dans leurs applications ou enrichir progressivement le compte d’un utilisateur.\n\nL’API My Account fonctionne dans le contexte de l’utilisateur actuellement connecté et peut être utilisée directement dans des applications destinées aux utilisateurs.\n\n:::tip Utiliser le domaine Auth0 ou un domaine personnalisé\n\nL’API My Account prend en charge l’utilisation de votre domaine Auth0 canonique ou de votre domaine personnalisé, mais vous devez utiliser le même domaine tout au long du processus, notamment pour\_:\n\n- Obtenir un jeton d’accès\n- Définir la valeur d’audience\n- Appeler le point de terminaison de l’API My Account\n\nPour en savoir plus, consultez [Custom Domains](https://auth0.com/docs/customize/custom-domains).\n\n:::\n\n## Activer l’API My Account\n\nVous pouvez activer l’API My Account pour votre tenant dans le tableau de bord Auth0\_:\n\n1. Accédez à Authentication > APIs.\n2. Repérez la bannière MyAccount API.\n3. Sélectionnez Activate.\n\n![](https://images.ctfassets.net/cdy7uua7fh8z/DGkDQNIHcegN8vtQyEvF3/a2e98b06867701a66fa1f1b3df1c996b/My_Account_API_-_Activate.png)\n\nPar défaut, l’API My Account est créée avec les application API access policies suivantes\_:\n\n`require_client_grant` pour les flux utilisateur\n\n`deny_all` pour les flux client (machine à machine)\n\nPour qu’une application puisse accéder à l’API My Account au nom de l’utilisateur, vous devez créer explicitement un client grant pour cette application, ce qui vous permet de définir les scopes maximaux que l’application peut demander. Vous pouvez aussi remplacer la policy des flux d’accès utilisateur par allow_all, ce qui permet à toute application de votre tenant de demander n’importe quel scope de l’API My Account.\n\nComme l’API My Account expose des renseignements et des opérations sensibles, Auth0 ne recommande pas d’utiliser allow_all pour les flux d’accès utilisateur. Vous devriez appliquer le principe du moindre privilège avec l’API My Account afin de veiller à ce que les applications n’obtiennent que l’accès dont elles ont réellement besoin, ce qui réduit les risques de sécurité potentiels.\n\nLes permissions finales accordées à l’application seront déterminées par l’intersection des scopes autorisés par l’application API access policy, des permissions Role-Based Access Control (RBAC) attribuées à l’utilisateur final et du consentement donné par l’utilisateur, s’il y a lieu.\n\n:::info Flux pris en charge\n\nVous ne pouvez pas mettre à jour l’application API access policy pour l’accès client à l’API My Account, ce qui signifie que vous ne pouvez pas accéder à l’API My Account à l’aide du Client Credentials Flow.\n\n:::\n\nPour en savoir plus sur la gestion des application API access policies et des client grants qui y sont associés, consultez [Application Access to APIs: Client Grants](https://auth0.com/docs/get-started/applications/application-access-to-apis-client-grants).\n\n## Obtenir un jeton d’accès\n\nVous pouvez obtenir un jeton d’accès pour l’API My Account de la même façon que pour l’une de vos propres API.\n\n:::info &nbsp\nSi vous comptez permettre à l’API My Account d’effectuer des opérations sensibles (comme l’inscription d’une méthode d’authentification), nous vous recommandons fortement d’utiliser l’[authentification renforcée (step-up authentication)](https://auth0.com/docs/secure/multi-factor-authentication/step-up-authentication) pour appliquer des politiques de sécurité supplémentaires au moyen de l’[authentification multifacteur (MFA)](https://auth0.com/docs/secure/multi-factor-authentication).\n:::\n\nSi vous utilisez Universal Login, consultez les articles suivants\_:\n\n- [Call Your API Using the Authorization Code Flow](https://auth0.com/docs/get-started/authentication-and-authorization-flow/authorization-code-flow/call-your-api-using-the-authorization-code-flow)\n- [Call Your API Using the Authorization Code Flow with PKCE](https://auth0.com/docs/get-started/authentication-and-authorization-flow/authorization-code-flow-with-pkce/call-your-api-using-the-authorization-code-flow-with-pkce)\n\nSi vous utilisez l’embedded login, consultez les articles suivants\_:\n\n- [Call Your API Using Resource Owner Password Flow](https://auth0.com/docs/get-started/authentication-and-authorization-flow/resource-owner-password-flow/call-your-api-using-resource-owner-password-flow)\n- [Login Flow with Native Passkeys API](https://auth0.com/docs/native-passkeys-api#login-flow)\n\n## Exemples\n\n### Universal Login avec le flux de code d’autorisation\n\n**Étape 1\_: Demander un code d’autorisation**\n\n```\ncurl --request GET \\\n  --url 'https://{yourDomain}/authorize?response_type=code&client_id={yourClientId}&redirect_uri=%7ByourRedirectUri%7D&scope=create%3Ame%3Aauthentication_methods&offline_access=&audience=https%3A%2F%2F{yourDomain}%2Fme%2F'\n```\n\n**Étape 2\_: Échanger le code contre un jeton d’accès**\n\n```\ncurl --request POST \\\n  --url 'https://{yourDomain}/oauth/token' \\\n  --header 'content-type: application/json' \\\n  --data '{\"grant_type\": \"authorization_code\",\"client_id\": \"{yourClientId}\",\"client_secret\": \"{yourClientSecret}\",\"code\": \"{yourAuthorizationCode}\",\"redirect_uri\": \"{yourRedirectUri}\",\"audience\": \"{yourAudience}\",\"scope\": \"create:me:authentication_methods\",\"offline_access\": \"\"}'\n```\n\n### Embedded login avec des passkeys natives\n\n**Étape 1\_: Demander un challenge de connexion**\n\n```\ncurl --request POST \\\n  --url 'https://{yourDomain}/passkey/challenge' \\\n  --header 'content-type: application/json' \\\n  --data '{\"client_id\": \"{yourClientId}\"}'\n```\n\n**Étape 2\_: Authentifier un utilisateur existant**\n\n```\ncurl --request POST \\\n  --url 'https://{yourDomain}/oauth/token' \\\n  --header 'content-type: application/json' \\\n  --data '{  \"grant_type\": \"urn:okta:params:oauth:grant-type:webauthn\",  \"client_id\": \"{yourClientId}\",  \"scope\": \"create:me:authentication_methods offline_access\",  \"audience\": \"https://{yourDomain}/me/\",  \"auth_session\": \"{sessionIdFromTheFirstRequest}\",  \"authn_response\": \"{authenticatorResponse}\"}'\n```"
servers:
  - url: https://{host}/me/v1
    variables:
      host:
        default: auth0.auth0.com
        description: Nom d’hôte personnalisé ou canonique
security: []
tags:
  - name: factors
    description: Facteurs
    x-displayName: Factors
  - name: connected-accounts
    description: Comptes connectés
    x-displayName: Connected Accounts
  - name: authentication-methods
    description: Méthodes d’authentification
    x-displayName: Authentication Methods
  - name: consents
    description: Consentements
    x-displayName: Consents
  - name: organizations
    description: Organisations
    x-displayName: Organizations
  - name: profile
    description: Profil
    x-displayName: Profile
paths:
  /consent-signing-keys:
    post:
      tags:
        - consents
      summary: Enregistrer une clé de connexion de consentement
      description: "Enregistrer une clé de connexion de consentement pour l’utilisateur authentifié. La clé sert à vérifier les décisions de consentement signées. Seule la clé publique est fournie\_; la clé privée correspondante ne doit jamais quitter l’appareil."
      operationId: createConsentSigningKey
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateConsentSigningKeyRequestContent'
        required: true
      responses:
        '201':
          $ref: '#/components/responses/CreateConsentSigningKeyResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/TooManyRequests'
      security:
        - Bearer-DPoP:
            - create:me:consent_signing_keys
      x-codeSamples: []
components:
  schemas:
    CreateConsentSigningKeyRequestContent:
      description: >-
        Corps de la requête d’enregistrement d’une clé de connexion de
        consentement.
      type: object
      properties:
        jwk:
          $ref: '#/components/schemas/ConsentSigningKeyJwkRequest'
        device_identifier:
          type: string
          description: >-
            Une étiquette lisible par l’utilisateur pour l’appareil qui détient
            la clé privée correspondante. Il s’agit uniquement d’une étiquette
            et non d’une garantie que la clé est liée à cet appareil.
          minLength: 1
          maxLength: 128
        expires_at:
          type: string
          format: date-time
          description: "Date à laquelle la clé doit expirer. Facultatif\_; la durée de vie maximale par défaut est de 2 ans. Cette date doit être située à au moins 1 heure dans l’avenir et ne pas dépasser la valeur par défaut."
      required:
        - jwk
        - device_identifier
      additionalProperties: false
    ConsentSigningKeyJwkRequest:
      description: "Une JWK publique à enregistrer pour signer les décisions de consentement. ES256 (ECDSA P-256) est l’algorithme attendu\_; RS256 et PS256 sont également acceptés. Seul le matériel de clé publique peut être fourni, et l’identifiant de la clé est attribué par Auth0."
      type: object
      oneOf:
        - $ref: '#/components/schemas/ConsentSigningKeyEcJwkRequest'
          title: ec
        - $ref: '#/components/schemas/ConsentSigningKeyRsaJwkRequest'
          title: rsa
      discriminator:
        propertyName: kty
        mapping:
          EC: '#/components/schemas/ConsentSigningKeyEcJwkRequest'
          RSA: '#/components/schemas/ConsentSigningKeyRsaJwkRequest'
        x-openapi-typescript-ignore: true
    ConsentSigningKey:
      type: object
      description: >-
        Une clé de connexion de consentement enregistrée par l’utilisateur
        authentifié.
      properties:
        kid:
          type: string
          description: >-
            L’identifiant unique de la clé de connexion enregistrée.
            Fournissez-le lorsque vous signez une décision de consentement afin
            que la signature puisse être vérifiée à l’aide de cette clé.
          example: csk_72jbvv7LfRKYp59gtRLtkn
        jwk:
          $ref: '#/components/schemas/ConsentSigningKeyJwk'
        device_identifier:
          type: string
          description: >-
            L’étiquette lisible par l’utilisateur de l’appareil contenant la clé
            privée correspondante.
        created_at:
          type: string
          format: date-time
          description: La date et l’heure auxquelles la clé de connexion a été enregistrée.
        expires_at:
          type: string
          format: date-time
          description: >-
            La date et l’heure d’expiration de la clé de connexion. Après cette
            date, la clé ne peut plus servir à signer des décisions de
            consentement et doit être remplacée.
      required:
        - kid
        - jwk
        - device_identifier
        - created_at
        - expires_at
      additionalProperties: false
    ErrorResponse:
      properties:
        type:
          type: string
        status:
          type: number
        title:
          type: string
        detail:
          type: string
        validation_errors:
          type: array
          items:
            $ref: '#/components/schemas/ValidationError'
      required:
        - type
        - status
        - title
        - detail
      type: object
      additionalProperties: false
    ConsentSigningKeyEcJwkRequest:
      type: object
      description: >-
        Une JWK ECDSA P-256 publique à enregistrer pour signer les décisions de
        consentement. Le matériel de clé privée ne doit jamais être fourni.
        L’identifiant de la clé est attribué par Auth0 et ne doit pas être
        fourni.
      properties:
        kty:
          type: string
          description: Le type de clé. Courbe elliptique.
          const: EC
        crv:
          type: string
          description: >-
            La courbe sur laquelle la clé est définie. Seule P-256 est prise en
            charge.
          const: P-256
        alg:
          type: string
          description: L’algorithme auquel la clé est destinée.
          const: ES256
        use:
          type: string
          description: >-
            L’utilisation prévue de la clé. La clé doit être une clé de
            connexion.
          const: sig
        x:
          type: string
          description: La coordonnée x de la clé publique encodée en base64url.
          pattern: ^[A-Za-z0-9_-]{43}$
        'y':
          type: string
          description: La coordonnée y de la clé publique encodée en base64url.
          pattern: ^[A-Za-z0-9_-]{43}$
      required:
        - kty
        - crv
        - alg
        - use
        - x
        - 'y'
      additionalProperties: false
    ConsentSigningKeyRsaJwkRequest:
      type: object
      description: "Une JWK RSA publique à enregistrer pour signer les décisions de consentement. Le matériel de clé privée ne doit jamais être fourni. L’identifiant de la clé est attribué par Auth0 et ne doit pas être fourni. Les clés RSA sont prises en charge, mais sont peu courantes pour les clés d’appareil liées au matériel\_; privilégiez ES256."
      properties:
        kty:
          type: string
          description: Le type de clé. RSA.
          const: RSA
        alg:
          $ref: '#/components/schemas/ConsentSigningKeyRsaAlgorithmEnum'
        use:
          type: string
          description: >-
            L’utilisation prévue de la clé. La clé doit être une clé de
            connexion.
          const: sig
        'n':
          type: string
          description: "Le module de la clé publique encodé en base64url. Un module de 2\_048 bits s’encode en 342 caractères, un module de 4\_096 bits en 683. La limite supérieure est de 1\_000 plutôt que les 1\_400 de consents-api, car ce service compile les motifs avec RE2, qui rejette les répétitions bornées supérieures à 1\_000\_; 1\_000 permet tout de même des modules bien au-delà de 4\_096 bits."
          pattern: ^[A-Za-z0-9_-]{342,1000}$
        e:
          type: string
          description: L’exposant public de la clé publique encodé en base64url.
          pattern: ^[A-Za-z0-9_-]{1,16}$
      required:
        - kty
        - alg
        - use
        - 'n'
        - e
      additionalProperties: false
    ConsentSigningKeyJwk:
      description: >-
        Une JWK publique enregistrée servant à signer des décisions de
        consentement, y compris l’identifiant de clé attribué par Auth0.
      type: object
      oneOf:
        - $ref: '#/components/schemas/ConsentSigningKeyEcJwk'
          title: ec
        - $ref: '#/components/schemas/ConsentSigningKeyRsaJwk'
          title: rsa
      discriminator:
        propertyName: kty
        mapping:
          EC: '#/components/schemas/ConsentSigningKeyEcJwk'
          RSA: '#/components/schemas/ConsentSigningKeyRsaJwk'
        x-openapi-typescript-ignore: true
    ValidationError:
      type: object
      properties:
        detail:
          type: string
        field:
          type: string
        pointer:
          type: string
        source:
          type: string
      required:
        - detail
      additionalProperties: false
    ConsentSigningKeyRsaAlgorithmEnum:
      type: string
      description: L’algorithme de signature RSA auquel la clé est destinée.
      enum:
        - RS256
        - PS256
    ConsentSigningKeyEcJwk:
      type: object
      description: >-
        Une JWK ECDSA P-256 publique enregistrée, utilisée pour signer les
        décisions de consentement. Le matériel de clé privée n’est jamais stocké
        ni renvoyé.
      properties:
        kty:
          type: string
          description: Le type de clé. Courbe elliptique.
          const: EC
        crv:
          type: string
          description: La courbe sur laquelle la clé est définie.
          const: P-256
        alg:
          type: string
          description: L’algorithme auquel la clé est destinée.
          const: ES256
        use:
          type: string
          description: L’utilisation prévue de la clé.
          const: sig
        x:
          type: string
          description: La coordonnée x de la clé publique encodée en base64url.
          pattern: ^[A-Za-z0-9_-]{43}$
        'y':
          type: string
          description: La coordonnée y de la clé publique encodée en base64url.
          pattern: ^[A-Za-z0-9_-]{43}$
        kid:
          type: string
          description: >-
            L’identifiant qu’Auth0 a attribué à cette clé. Correspond au `kid`
            de niveau supérieur.
          minLength: 1
          maxLength: 128
      required:
        - kty
        - crv
        - alg
        - use
        - x
        - 'y'
        - kid
      additionalProperties: false
    ConsentSigningKeyRsaJwk:
      type: object
      description: >-
        Une JWK RSA publique enregistrée servant à signer des décisions de
        consentement. Le matériel de clé privée n’est jamais stocké ni renvoyé.
      properties:
        kty:
          type: string
          description: 'Le type de clé : RSA.'
          const: RSA
        alg:
          $ref: '#/components/schemas/ConsentSigningKeyRsaAlgorithmEnum'
        use:
          type: string
          description: L’utilisation prévue de la clé.
          const: sig
        'n':
          type: string
          description: Le module de la clé publique encodé en base64url.
          pattern: ^[A-Za-z0-9_-]{342,1000}$
        e:
          type: string
          description: L’exposant public de la clé publique encodé en base64url.
          pattern: ^[A-Za-z0-9_-]{1,16}$
        kid:
          type: string
          description: >-
            L’identifiant de clé attribué par Auth0 à cette clé. Correspond au
            champ `kid` de niveau supérieur.
          minLength: 1
          maxLength: 128
      required:
        - kty
        - alg
        - use
        - 'n'
        - e
        - kid
      additionalProperties: false
  responses:
    CreateConsentSigningKeyResponse:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ConsentSigningKey'
      description: Clé de connexion de consentement enregistrée avec succès
      headers:
        Location:
          $ref: '#/components/headers/ConsentSigningKeyLocationHeader'
        x-ratelimit-limit:
          $ref: '#/components/headers/XRateLimitLimitHeader'
        x-ratelimit-reset:
          $ref: '#/components/headers/XRateLimitResetHeader'
        x-ratelimit-remaining:
          $ref: '#/components/headers/XRateLimitRemainingHeader'
    BadRequest:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
      description: Entrée invalide selon le schéma.
      headers:
        x-correlation-id:
          $ref: '#/components/headers/CorrelationIdHeader'
        traceparent:
          $ref: '#/components/headers/TraceparentHeader'
    Unauthorized:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
      description: Non autorisé.
      headers:
        x-correlation-id:
          $ref: '#/components/headers/CorrelationIdHeader'
        traceparent:
          $ref: '#/components/headers/TraceparentHeader'
    Forbidden:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
      description: Interdit.
      headers:
        x-correlation-id:
          $ref: '#/components/headers/CorrelationIdHeader'
        traceparent:
          $ref: '#/components/headers/TraceparentHeader'
    UnsupportedMediaType:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
      description: Type de média non pris en charge.
      headers:
        x-correlation-id:
          $ref: '#/components/headers/CorrelationIdHeader'
        traceparent:
          $ref: '#/components/headers/TraceparentHeader'
    UnprocessableEntity:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
      description: >-
        La demande est bien formée, mais ne peut pas être traitée dans l’état
        actuel, par exemple parce qu’une limite de ressources a été atteinte.
    TooManyRequests:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
      description: Trop de requêtes.
      headers:
        retry-after:
          $ref: '#/components/headers/RetryAfterHeader'
        x-ratelimit-limit:
          $ref: '#/components/headers/XRateLimitLimitHeader'
        x-ratelimit-reset:
          $ref: '#/components/headers/XRateLimitResetHeader'
        x-ratelimit-remaining:
          $ref: '#/components/headers/XRateLimitRemainingHeader'
        x-auth0-error-kind:
          $ref: '#/components/headers/XAuth0ErrorKindHeader'
        x-correlation-id:
          $ref: '#/components/headers/CorrelationIdHeader'
        traceparent:
          $ref: '#/components/headers/TraceparentHeader'
  headers:
    ConsentSigningKeyLocationHeader:
      required: true
      description: URL de la ressource de clé de connexion de consentement enregistrée.
      schema:
        type: string
        format: uri
      examples:
        create:
          summary: >-
            URL d’emplacement d’une clé de connexion de consentement
            nouvellement enregistrée
          value: >-
            https://auth0.auth0.com/me/v1/consent-signing-keys/csk_72jbvv7LfRKYp59gtRLtkn
    XRateLimitLimitHeader:
      required: true
      description: Le nombre maximal de requêtes autorisées pendant la fenêtre de la limite
      schema:
        type: number
    XRateLimitResetHeader:
      required: true
      description: >-
        Le moment prévu (sous forme d’horodatage UNIX, en secondes) auquel le
        bucket sera réapprovisionné
      schema:
        type: number
    XRateLimitRemainingHeader:
      required: true
      description: >-
        Le nombre de requêtes restantes dans la fenêtre en cours avant le rejet
        des requêtes
      schema:
        type: number
    CorrelationIdHeader:
      required: false
      description: >-
        Renvoie l’`x-correlation-id` validé fourni dans la requête, ou un UUID
        v4 généré si aucun n’a été fourni.
      schema:
        type: string
    TraceparentHeader:
      required: false
      description: >-
        Un en-tête [W3C Trace Context](https://www.w3.org/TR/trace-context/) qui
        renvoie l’ID de la trace entrante avec un nouvel ID de span enfant.
      schema:
        type: string
    RetryAfterHeader:
      required: true
      description: >-
        Le nombre de secondes que le client doit attendre avant d’effectuer une
        nouvelle requête
      schema:
        type: number
    XAuth0ErrorKindHeader:
      description: >-
        Indique si la limite de débit dépassée est une limite globale (par
        tenant).
      schema:
        type: string
        const: global-rate-limit
  securitySchemes:
    Bearer-DPoP:
      type: http
      scheme: bearer
      description: >-
        Les jetons Bearer et DPoP sont pris en charge selon la configuration de
        l’API

````