Cette fonctionnalité est offerte uniquement aux clients du plan Entreprise. Pour en savoir plus, consultez la page Tarification.
Cas d’utilisation et enjeu de sécurité
Lorsqu’elles hébergent des flux d’authentification, les organisations déploient souvent des proxys inverses ou des passerelles en périphérie (comme Cloudflare Workers, Kong ou Envoy) en aval d’Auth0 afin d’appliquer des politiques de sécurité personnalisées, un filtrage des adresses IP ou un enrichissement des en-têtes. Si un attaquant découvre le domaine de votre locataire Auth0 (p. ex.,https://YOUR_AUTH0_DOMAIN.com), il peut envoyer des requêtes directement aux principaux points de terminaison d’authentification, comme /oauth/token ou /authorize, et ainsi contourner vos contrôles de sécurité en périphérie. Les clés API statiques classiques placées dans des en-têtes personnalisés risquent d’être interceptées ou de fuiter.
Fonctionnement
Lorsque vous imposez les signatures de messages HTTP (HTTP Message Signatures) dans les ACL du locataire :- Votre mandataire périphérique calcule une signature cryptographique HMAC-SHA256 qui couvre les attributs HTTP essentiels (comme
@method,@pathet les paires clé-valeur brutes@query-param), ainsi que les métadonnées requises (created,expiresetkeyid). - Lorsque le trafic atteint Auth0, les ACL du locataire vérifient la signature HMAC et les paramètres d’horodatage avant de traiter la requête.
- Auth0 bloque immédiatement, au niveau de la couche réseau, les requêtes directes, non signées, altérées ou expirées.
Critères d’évaluation des signatures
Auth0 vérifie les éléments suivants dans les signatures :- L’algorithme doit être HMAC-SHA256 (
hmac-sha256). - La signature peut couvrir les composants dérivés suivants de la requête HTTP :
- Chaque String d’entrée de signature doit inclure les paramètres
created,expiresetkeyid. Les requêtes auxquelles il manque l’un de ces paramètres sont considérées comme non correspondantes. - La fenêtre de validité de la signature ne peut pas dépasser 1 heure (
expires - created <= 3600), et Auth0 applique une tolérance intégrée de 60 secondes pour le décalage d’horloge (created <= now + 60setnow <= expires + 60s). - Les requêtes contenant plusieurs étiquettes de dictionnaire de signature sont rejetées.
Configurer
Enregistrer la clé de connexion du mandataire périphérique
Créez une clé HMAC-SHA256 pour signer les requêtes HTTP envoyées par votre mandataire périphérique.Le champ
value doit être une String encodée en Base64 qui, une fois décodée, fait au minimum 32 octets bruts et au maximum 512 octets.id renvoyé (p. ex. key_aBcDeFgH). Vous le fournirez comme paramètre keyid dans vos en-têtes HTTP Signature-Input et l’associerez aux règles de l’ACL du locataire.
Configurer les en-têtes de requête en amont
Votre mandataire périphérique ou votre service de signature doit ajouter deux en-têtes standards RFC 9421 (Signature-Input et Signature) à toutes les requêtes transférées. Si votre fournisseur utilise une bibliothèque à code source ouvert, nous vous recommandons de vérifier auprès de lui.
Construire la base de signature
Conformément à la section 2.5 de la RFC 9421, la base de signature se compose d’une ligne par composant couvert, dans l’ordre exact indiqué dansSignature-Input, la dernière ligne étant @signature-params :
Exemples d’en-têtes
Consultez les exemples d’en-têtes suivants pour savoir comment utiliserSignature-Input et Signature.
Exemple pour (POST /oauth/token)
state dans une requête GET /authorize?state=abc123xyz&client_id=myclient
Configurer les règles de l’ACL du locataire
Pour exiger des signatures valides, créez une règle d’ACL du locataire qui bloque les requêtes selon le signalhttp_message_signature.
Bloquer les requêtes non signées ou invalides
Pour bloquer toute requête entrante qui ne contient pas de signature de message HTTP valide signée par une clé autorisée, configurez une règlenot_match semblable à l’exemple ci-dessous. Nous vous recommandons de configurer le mode de surveillance afin d’évaluer l’incidence de la règle not_match.
Rotation des clés sans interruption de service
Vous pouvez effectuer la rotation des secrets de signature sans interrompre le trafic en direct en attribuant plusieurs identifiants de clé actifs à une règle ACL.- Générez un nouvel identifiant de clé à l’aide du terminal Créer une clé ACL réseau.
Pour utiliser Management API, vous devez obtenir un jeton d’accès Management API avec les permissions suivantes :
create:network_acl_keys, update:network_acls et delete:network_acl_keys.- Mettez à jour la règle ACL. Pour ce faire, ajoutez le nouvel identifiant de clé au tableau
http_message_signature.keys, en plus de la clé active (jusqu’à 10 clés permises par règle) :
Avant de passer à l’étape suivante, nous vous recommandons de vérifier manuellement que la nouvelle clé est acceptée. Un délai peut s’écouler entre la mise à jour de la règle et son application.
-
Mettez à jour la signature en périphérie. Configurez votre mandataire périphérique pour qu’il commence à signer le trafic entrant avec le nouvel identifiant de clé (exemple :
key_xYzWvUtS). -
Surveillez les journaux du locataire. Inspectez l’événement de journal
acls_summary. Vérifiez le champvalid_signature_key_idsdans les détails du journal pour confirmer que le trafic entrant est bien validé avec le nouvel identifiant de clé :
- Mettez l’ancienne clé hors service. Une fois que
valid_signature_key_idsne fait plus référence àkey_aBcDeFgH, retirez l’ID de l’ancienne clé de la règle ACL et appelez le terminal Delete Network ACL Key :
Limites
Tenez compte des limites suivantes :- Vous pouvez utiliser jusqu’à 10 clés actives par locataire et associer jusqu’à 10 identifiants de clé par règle de liste de contrôle d’accès (ACL).
- Les points de terminaison de clés de Management API sont limités à 10 requêtes par seconde (RPS) pour les opérations de lecture (
network_acl_keys_read) et à 5 RPS pour les opérations d’écriture (network_acl_keys_write).