> ## 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écrit le cas de configuration particulier pour signer et chiffrer les requêtes SAML

# Signer et chiffrer les requêtes SAML

export const AuthLink = ({href, target = "_blank", rel = "noopener noreferrer", children}) => {
  const [processedHref, setProcessedHref] = useState(null);
  useEffect(() => {
    let unsubscribe = null;
    function init() {
      unsubscribe = window.autorun(() => {
        let processedHref = href;
        for (const [key, value] of window.rootStore.variableStore.values.entries()) {
          const escapedKey = key.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
          processedHref = processedHref.replace(new RegExp(escapedKey, "g"), value);
        }
        if (processedHref !== href) {
          setProcessedHref(processedHref);
        }
      });
    }
    if (window.rootStore) {
      init();
    } else {
      window.addEventListener("adu:storeReady", init);
    }
    return () => {
      window.removeEventListener("adu:storeReady", init);
      unsubscribe?.();
    };
  }, [href]);
  if (!processedHref) {
    return <code>{href}</code>;
  }
  return <a className="link" href={processedHref} target={target} rel={rel}>
      {children}
    </a>;
};

Pour renforcer la sécurité de vos transactions, vous pouvez signer ou chiffrer à la fois vos requêtes et vos réponses avec le protocole <Tooltip tip="Security Assertion Markup Language (SAML) : protocole normalisé permettant à deux parties d’échanger des informations d’authentification sans mot de passe." cta="Voir le glossaire" href="/fr-CA/docs/glossary?term=SAML">SAML</Tooltip>. Dans cet article, vous trouverez des configurations pour des scénarios précis, réparties en deux cas d’utilisation :

* Auth0 comme fournisseur de services SAML (par exemple, une connexion SAML)
* Auth0 comme <Tooltip tip="Fournisseur d’identité (IdP) : service qui stocke et gère les identités numériques." cta="Voir le glossaire" href="/fr-CA/docs/glossary?term=identity+provider">fournisseur d’identité</Tooltip> SAML (par exemple, une application configurée avec le module complémentaire SAML Web App)

<div id="auth0-as-the-saml-service-provider">
  ## Auth0 en tant que fournisseur de services SAML
</div>

Ces scénarios s’appliquent lorsque Auth0 agit comme fournisseur de services SAML, c’est-à-dire lorsqu’Auth0 se connecte à un fournisseur d’identité SAML en créant une connexion SAML.

<div id="sign-the-saml-authentication-request">
  ### Signer la demande d’authentification SAML
</div>

Si Auth0 est le **fournisseur de services** SAML, vous pouvez signer la demande d’authentification qu’Auth0 envoie à l’IdP comme suit :

1. Accédez à [Auth0 Dashboard > Authentication > Enterprise](https://manage.auth0.com/#/connections/enterprise), puis sélectionnez **SAML**.
2. Sélectionnez le nom de la connexion que vous souhaitez afficher.
3. Repérez **Sign Request**, puis activez le commutateur correspondant.
4. Téléchargez le certificat sous le commutateur **Sign Request**, puis fournissez-le à l’IdP afin qu’il puisse valider la signature.

<div id="enabledisable-deflate-encoding">
  #### Activer ou désactiver l’encodage deflate
</div>

Par défaut, les requêtes d’authentification SAML sont envoyées par HTTP-Redirect et utilisent l’encodage deflate, ce qui place la signature dans un paramètre de requête.

Pour désactiver l’encodage deflate, vous pouvez faire un [appel PATCH au point de terminaison Update a Connection de la Management API](https://auth0.com/docs/api/management/v2#!/Connections/patch_connections_by_id) et définir l’option `deflate` sur `false`.

La mise à jour de l’objet `options` d’une connexion remplace l’objet `options` en entier. Pour conserver les options de connexion existantes, récupérez l’objet `options` actuel et ajoutez-y les nouvelles paires clé-valeur.

Point de terminaison : `https://{yourDomain}/api/v2/connections/{yourConnectionId}`

Charge utile :

```json lines theme={null}
{
	{ 
		"options" : {
			[...], // toutes les autres options de connexion
		  "deflate": false
    }
  }
}
```

<div id="use-a-custom-key-to-sign-requests">
  ### Utiliser une clé personnalisée pour signer les requêtes
</div>

Par défaut, Auth0 utilise la clé privée du locataire pour signer les requêtes SAML (lorsque l’option **Sign Request** est activée). Vous pouvez également fournir votre propre paire de clés privée/publique pour signer les requêtes provenant d’une connexion précise.

Vous pouvez générer votre propre certificat et votre propre clé privée à l’aide de cette commande :

```bash wrap lines theme={null}
openssl req -x509 -nodes -sha256 -days 3650 -newkey rsa:2048 -keyout private_key.key -out certificate.crt
```

Il n’est pas possible de modifier, dans l’interface du Dashboard, la clé utilisée pour signer les requêtes pour la connexion. Vous devrez donc utiliser le [point de terminaison « Update a Connection »](https://auth0.com/docs/api/management/v2#!/Connections/patch_connections_by_id) de la <Tooltip tip="Management API : produit qui permet aux clients d’effectuer des tâches administratives." cta="Voir le glossaire" href="/fr-CA/docs/glossary?term=Management+API">Management API</Tooltip> v2 et ajouter une propriété `signing_key` à l’objet `options`, comme dans l’exemple de payload ci-dessous.

La mise à jour de l’objet `options` d’une connexion remplace entièrement cet objet. Pour conserver les options existantes de la connexion, récupérez l’objet `options` actuel et ajoutez-y les nouvelles paires clé-valeur.

Point de terminaison : `https://{yourDomain}/api/v2/connections/{yourConnectionId}`

Payload :

```json lines theme={null}
{
	{ 
		"options" : {
			[...], // toutes les autres options de connexion
		  "signing_key": {
				"key":"-----BEGIN PRIVATE KEY-----\n...{your private key here}...\n-----END PRIVATE KEY-----",
				"cert":"-----BEGIN CERTIFICATE-----\n...{your public key cert here}...\n-----END CERTIFICATE-----"
			}
    }
	}
}
```

Pour savoir comment obtenir la clé privée et le certificat sous forme de chaîne JSON à utiliser dans la charge utile, consultez [utiliser des certificats, des clés et des chaînes de caractères](/fr-CA/docs/authenticate/protocols/saml/saml-sso-integrations/work-with-certificates-and-keys-as-strings).

<div id="receive-signed-saml-authentication-responses">
  ### Recevoir des réponses d’authentification SAML signées
</div>

Si Auth0 est le **fournisseur de services** SAML, toutes les réponses SAML provenant de votre fournisseur d’identité devraient être signées afin d’indiquer qu’elles n’ont pas été modifiées par un tiers non autorisé.

Vous devrez configurer Auth0 pour valider la signature des réponses en obtenant un certificat de signature auprès du fournisseur d’identité et en chargeant ce certificat dans votre connexion Auth0 :

1. Accédez à [Auth0 Dashboard > Authentication > Enterprise](https://manage.auth0.com/#/connections/enterprise), puis sélectionnez **SAML**.
2. Sélectionnez le nom de la connexion que vous voulez afficher.
3. Repérez **X509 Signing Certificate**, puis téléversez le certificat.
4. Sélectionnez **Save Changes**.

Auth0 peut accepter une réponse signée pour l’assertion, pour la réponse elle-même ou pour les deux.

<div id="receive-encrypted-saml-authentication-assertions">
  ### Recevoir des assertions d’authentification SAML chiffrées
</div>

Si Auth0 est le fournisseur de services SAML, il peut devoir recevoir des assertions chiffrées d’un fournisseur d’identité. Pour ce faire, vous devez fournir à l’IdP le certificat de la clé publique du locataire. L’IdP chiffre l’assertion SAML à l’aide de la clé publique et l’envoie à Auth0, qui la déchiffre à l’aide de la clé privée du locataire.

Utilisez les liens suivants pour obtenir la clé publique dans différents formats :

* <AuthLink href="https://{yourDomain}/cer?cert=connection">CER</AuthLink>
* <AuthLink href="https://{yourDomain}/pem?cert=connection">PEM</AuthLink>
* <AuthLink href="https://{yourDomain}/rawpem?cert=connection">PEM brut</AuthLink>
* <AuthLink href="https://{yourDomain}/pb7?cert=connection">PKCS#7</AuthLink>
* <AuthLink href="https://{yourDomain}/fingerprint?cert=connection">Empreinte</AuthLink>

Téléchargez le certificat dans le format demandé par l’IdP.

<div id="set-content-decryption-algorithms">
  #### Définir les algorithmes de déchiffrement du contenu
</div>

Par défaut, Auth0 prend automatiquement en charge les algorithmes répertoriés dans le plus récent [profil d’algorithmes](/fr-CA/docs/authenticate/protocols/saml/saml-sso-integrations/algorithm-profiles) pour déchiffrer les assertions SAML.

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Si l’assertion est chiffrée avec un algorithme qui ne figure pas dans la liste, elle sera rejetée par Auth0.
</Callout>

Pour spécifier un profil différent ou utiliser un algorithme qui ne figure pas dans la liste, vous devez mettre à jour la connexion à l’aide du point de terminaison [Update a Connection](https://auth0.com/docs/api/management/v2/connections/patch-connections-by-id) et modifier la propriété `assertion_decryption_settings`, comme indiqué dans l’exemple de charge utile ci-dessous.

Lorsque vous mettez à jour l’objet d’options d’une connexion, la nouvelle configuration remplace l’intégralité de l’objet `options`. Pour conserver les options existantes de la connexion, récupérez l’objet d’options actuel et ajoutez-y les nouvelles paires clé-valeur.

Point de terminaison : `https://{yourDomain}/api/v2/connections/{yourConnectionId}`
Charge utile :

```json theme={null}
{
  "options": {
    [...], // toutes les autres options de connexion
    "assertion_decryption_settings": {
      "algorithm_profile": "v2026-1",
      "algorithm_exceptions": []
    }
  }
}
```

<div id="use-your-key-pair-to-decrypt-encrypted-responses">
  ### Utilisez votre paire de clés pour déchiffrer les réponses chiffrées
</div>

Comme indiqué ci-dessus, Auth0 utilisera par défaut la paire de clés privée/publique de votre locataire pour gérer le chiffrement. Vous pouvez également fournir votre propre paire de clés publique/privée si un scénario avancé l’exige.

Il n’est pas possible de modifier, dans l’interface du Dashboard, la paire de clés utilisée pour chiffrer et déchiffrer les requêtes pour la connexion. Vous devrez donc utiliser le point de terminaison [Update a Connection](https://auth0.com/docs/api/management/v2#!/Connections/patch_connections_by_id) de la Management API v2 et ajouter une propriété `decryptionKey` à l’objet `options`, comme indiqué dans l’exemple de charge utile ci-dessous.

La mise à jour de l’objet `options` d’une connexion remplace l’intégralité de cet objet. Pour conserver les options existantes de la connexion, récupérez l’objet `options` actuel et ajoutez-y les nouvelles paires clé/valeur.

Point de terminaison : `https://{yourDomain}/api/v2/connections/{yourConnectionId}`

Charge utile :

```json lines theme={null}
{
	{ 
		"options" : {
			[...], // toutes les autres options de connexion
		  "decryptionKey": {
				"key":"-----BEGIN PRIVATE KEY-----\n...{your private key here}...\n-----END PRIVATE KEY-----",
				"cert":"-----BEGIN CERTIFICATE-----\n...{your public key cert here}...\n-----END CERTIFICATE-----"
			}
	}
}
```

Les métadonnées SAML disponibles pour la connexion seront mises à jour avec le certificat fourni afin que le fournisseur d’identité puisse le récupérer pour signer la réponse SAML.

<div id="auth0-as-the-saml-identity-provider">
  ## Auth0 comme fournisseur d’identité SAML
</div>

Ce scénario s’applique lorsqu’Auth0 est le fournisseur d’identité SAML d’une application. Dans le Dashboard, cela correspond à une **Application** pour laquelle le module complémentaire SAML Web App est activé.

<div id="sign-the-saml-responsesassertions">
  ### Signer les réponses/assertions SAML
</div>

Si Auth0 est le fournisseur d’identité SAML, il signera les assertions SAML avec la clé privée du locataire et fournira au fournisseur de services la clé publique ou le certificat nécessaire pour valider la signature.

Pour signer les assertions SAML :

1. Accédez à [Auth0 Dashboard > Applications](https://manage.auth0.com/#/applications), puis sélectionnez le nom de l’application pour l’afficher.
2. Faites défiler jusqu’au bas de la page **Settings**, sélectionnez **Show Advanced Settings**, puis la vue **Certificates**.
3. Sélectionnez **Download Certificate**, puis choisissez le format dans lequel vous souhaitez recevoir votre certificat de signature.
4. Envoyez votre certificat au fournisseur de services.

Par défaut, Auth0 signe l’**assertion** SAML dans la réponse. Pour signer plutôt la **réponse** SAML :

1. Accédez à [Auth0 Dashboard > Applications](https://manage.auth0.com/#/applications), puis sélectionnez le nom de l’application pour l’afficher.
2. Sélectionnez la vue **Addons**.
3. Sélectionnez **SAML2 Web App** pour afficher ses paramètres, puis repérez le bloc de code **Settings**.
4. Repérez la clé **`"signResponse"`**. Retirez les marques de commentaire (ou ajoutez-la, au besoin), puis définissez sa valeur sur `true` (la valeur par défaut est `false`). La configuration devrait ressembler à ceci :

   ```json lines theme={null}
   {
     [...], // autres paramètres
     "signResponse": true
   }
   ```

<div id="change-the-signing-key-for-saml-responses">
  #### Changer la clé de signature des réponses SAML
</div>

Par défaut, Auth0 utilise la paire de clés privée/publique attribuée à votre locataire pour signer les réponses ou les assertions SAML. Dans certains cas très précis, vous voudrez peut-être fournir votre propre paire de clés. Vous pouvez le faire avec une règle comme celle-ci :

```javascript lines expandable theme={null}
/**
* Gestionnaire qui sera appelé lors de l'exécution d'un flux PostLogin.
*
* @param {Event} event - Détails sur l'utilisateur et le contexte dans lequel il se connecte.
* @param {PostLoginAPI} api - Interface dont les méthodes peuvent être utilisées pour modifier le comportement de la connexion.
*/
exports.onExecutePostLogin = async (event, api) => {

    // remplacer par l'ID de l'application pour laquelle le module complémentaire SAML Web App est activé
      // et pour laquelle vous souhaitez modifier la paire de clés de signature.
      const samlIdpClientId = 'YOUR_SAML_APP_CLIENT_ID';

    // effectuer cette opération uniquement pour le client_id spécifique. Si vous avez plusieurs IdP nécessitant 
    // des certificats personnalisés, vous aurez une instruction "if" pour chacun.  
    if (event.client.client_id === samlIdpClientId) {

    // indiquez votre propre clé privée et certificat ici  
    // consultez https://auth0.com/docs/authenticate/protocols/saml/saml-sso-integrations/work-with-certificates-and-keys-as-strings 
    // pour les instructions de mise en forme : vous commencez avec un certificat au format PEM et
    // remplacez les fins de ligne par "\n"
    const signingCert = "-----BEGIN CERTIFICATE-----\nnMIIC8jCCAdqgAwIBAgIJObB6jmhG0QIEMA0GCSqGSIb3DQEBBQUAMCAxHjAcBgNV[..all the other lines..]-----END CERTIFICATE-----\n";
    const signingKey = "-----BEGIN PRIVATE KEY-----\nnMIIC8jCCAdqgAwIBAgIJObB6jmhG0QIEMA0GCSqGSIb3DQEBBQUAMCAxHjAcBgNV[..all the other lines..]-----END PRIVATE KEY-----\n";

    api.samlResponse.setCert(signingCert)    
    api.samlResponse.setKey(signingKey);

  }
  };
```

Pour savoir comment convertir les fichiers de clé privée et de certificat en chaînes de caractères que vous pouvez utiliser dans une règle, consultez [Utiliser des certificats, des clés et des chaînes de caractères](/fr-CA/docs/authenticate/protocols/saml/saml-sso-integrations/work-with-certificates-and-keys-as-strings).

<div id="receive-signed-saml-authentication-requests">
  ### Recevoir des requêtes d’authentification SAML signées
</div>

Si Auth0 est le fournisseur d’identité SAML, il peut recevoir des requêtes signées avec la clé privée du fournisseur de services. Auth0 utilise la clé publique ou le certificat pour valider la signature.

Pour configurer la validation de signature :

1. Téléchargez le certificat du fournisseur de services contenant la clé publique.
2. Accédez à [Auth0 Dashboard > Applications](https://manage.auth0.com/#/applications), puis sélectionnez le nom de l’application à consulter.
3. Sélectionnez la vue **Addons**.
4. Sélectionnez **SAML2 Web App** pour afficher ses paramètres, puis repérez le bloc de code **Settings**.
5. Repérez la clé **`"signingCert"`**. Décommentez-la (ou ajoutez-la, au besoin), puis attribuez-lui comme valeur le certificat que vous avez téléchargé depuis le fournisseur de services. La configuration devrait ressembler à ceci :

   ```json lines theme={null}
   {
     [...], // autres paramètres
     "signingCert": "-----BEGIN CERTIFICATE-----\nMIIC8jCCAdqgAwIBAgIJObB6jmhG0QIEMA0GCSqGSIb3DQEBBQUAMCAxHjAcBgNV\n[..all the other lines..]-----END CERTIFICATE-----\n"
   }
   ```

<div id="send-encrypted-saml-authentication-assertions">
  ### Envoyer des assertions d’authentification SAML chiffrées
</div>

Si Auth0 est le fournisseur d’identité SAML, vous pouvez utiliser [Actions](/fr-CA/docs/customize/actions) pour chiffrer les assertions SAML qu’il envoie. Vous pouvez aussi choisir l’algorithme utilisé pour chiffrer les assertions. Auth0 recommande d’utiliser `aes256-gcm` pour un niveau de sécurité accru.

Vous devez obtenir le certificat et la clé publique auprès du fournisseur de services. Si vous n’avez obtenu que le certificat, vous pouvez extraire la clé publique à l’aide d’`openssl`. En supposant que le fichier de certificat s’appelle `certificate.pem`, vous pouvez exécuter :

`openssl x509 -in certificate.pem -pubkey -noout > public_key.pem`

Une fois que vous avez obtenu les fichiers de certificat et de clé publique, vous devez [les convertir en chaînes de caractères](/fr-CA/docs/authenticate/protocols/saml/saml-sso-integrations/work-with-certificates-and-keys-as-strings) pour les utiliser dans une Action. L’Action ressemblera à ceci :

```js lines theme={null}
exports.onExecutePostLogin = async (event, api) => {

// cet Action définit une clé publique spécifique pour chiffrer l'assertion SAML générée par Auth0
  if (
    event.client.client_id ===
    "THE_CLIENT_ID_OF_THE_APP_WITH_THE_SAML_APP_ADDON"
  ) {
    const encryptionCert =
      "-----BEGIN CERTIFICATE-----\nnMIIC8jCCAdqgAwIBAgIJObB6jmhG0QIEMA0GCSqGSIb3DQEBBQUAMCAxHjAcBgNV[..all the other lines..]-----END CERTIFICATE-----\n";
    const encryptionPublicKey =
      "-----BEGIN PUBLIC KEY-----\nnMIIC8jCCAdqgAwIBAgIJObB6jmhG0QIEMA0GCSqGSIb3DQEBBQUAMCAxHjAcBgNV[..all the other lines..]-----END PUBLIC KEY-----\n";

    api.samlResponse.setEncryptionCert(encryptionCert);
    api.samlResponse.setEncryptionPublicKey(encryptionPublicKey);
    api.samlResponse.setEncryptionAlgorithm("aes256-gcm");
  }
};
```

Auth0 prend en charge les algorithmes suivants pour le chiffrement des assertions :

* [`aes256-gcm`](https://www.w3.org/TR/xmlenc-core1/#sec-AES-GCM) **(recommandé)** : Chiffrement authentifié qui assure à la fois la confidentialité et l’intégrité. Il résiste aux attaques par oracle de validité du format.
* [`aes256-cbc`](https://www.w3.org/TR/xmlenc-core1/#sec-AES) (par défaut) : Il n’offre aucune garantie d’intégrité. Lorsqu’une Action n’utilise pas l’objet [`api.samlResponse.setEncryptionAlgorithm`](/fr-CA/docs/customize/actions/explore-triggers/signup-and-login-triggers/login-trigger/post-login-api-object#api-samlresponse-setencryptioncert-encryptioncert) pour définir l’algorithme de chiffrement, Auth0 utilise par défaut l’algorithme `aes256-cbc` et consigne un avertissement de dépréciation dans les journaux de votre locataire.

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Pour le transport des clés, Auth0 utilise [`rsa-oaep`](https://www.w3.org/TR/xmlenc-core1/#rsa-oaep), y compris les fonctions MGF1 et SHA1.
</Callout>

<Warning>
  Auth0 prévoit de remplacer l’algorithme de chiffrement par défaut par `aes256-gcm`.

  Pour assurer un comportement cohérent après ce changement, nous vous recommandons de passer à `aes256-gcm` :

  1. Vérifiez que votre fournisseur de services SAML prend en charge `aes256-gcm`, et communiquez avec lui pour obtenir de l’assistance si ce n’est pas le cas.
  2. Définissez l’algorithme de chiffrement dans le code de votre Action avec `api.samlResponse.setEncryptionAlgorithm("aes256-gcm");`.
</Warning>

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

* [Utiliser des certificats et des clés sous forme de chaînes de caractères](/fr-CA/docs/authenticate/protocols/saml/saml-sso-integrations/work-with-certificates-and-keys-as-strings)
