Fonctionnement
-
Liaison de certificat Mutual-TLS (mTLS) dans la couche de transport :
- Mécanisme : Lorsque l’application cliente demande un jeton d’accès au serveur d’autorisation Auth0, elle établit une connexion TLS mutuelle (mTLS), dans laquelle l’application cliente et le serveur présentent et vérifient tous deux leurs certificats X.509 respectifs.
- Liaison : Le serveur d’autorisation Auth0 inclut une revendication de confirmation (
cnf) contenant l’empreinte du certificat de l’application cliente directement dans le jeton d’accès émis. - Preuve de possession : Lorsque l’application cliente utilise le jeton d’accès lié à mTLS pour accéder à un serveur de ressources, elle doit de nouveau établir une connexion mTLS en utilisant le même certificat. Le serveur de ressources vérifie que le certificat présenté par l’application cliente correspond à celui lié au jeton d’accès. S’ils ne correspondent pas, le serveur de ressources rejette la requête.
- Avantage : Même si un attaquant vole le jeton d’accès, il ne peut pas l’utiliser, car il ne possède pas la clé privée et le certificat correspondants requis pour établir la bonne connexion mTLS. La contrainte de l’expéditeur par mTLS est généralement utilisée par des applications confidentielles, comme les applications côté serveur, qui peuvent stocker et gérer en toute sécurité des certificats X.509 et leurs clés privées.
-
Démonstration de preuve de possession (DPoP) dans la couche applicative :
- Mécanisme : DPoP fonctionne dans la couche applicative et ne nécessite pas mTLS. L’application cliente génère plutôt sa propre paire de clés cryptographiques (clé privée/clé publique).
- Liaison : Lorsqu’elle demande un jeton d’accès, l’application cliente crée un JSON Web Token (JWT) appelé DPoP Proof JWT. Ce JWT de preuve contient la clé publique de l’application cliente et est signé avec sa clé privée. L’application cliente envoie le DPoP Proof JWT avec la demande de jeton d’accès. Le serveur d’autorisation Auth0 valide le DPoP Proof JWT, puis lie le jeton d’accès émis à la clé publique.
- Preuve de possession : Lorsque l’application cliente utilise le jeton d’accès lié à DPoP pour appeler un serveur de ressources, elle génère un autre DPoP Proof JWT signé avec sa clé privée pour cette requête d’API. L’application cliente envoie le DPoP Proof JWT dans un en-tête avec le jeton d’accès. Le serveur de ressources vérifie que le jeton d’accès est lié à la clé publique contenue dans le DPoP Proof JWT et que le DPoP Proof JWT lui-même a été signé avec la clé privée correspondante au moyen d’une revendication de confirmation (
cnf). - Avantage : DPoP est plus flexible que mTLS, car il ne nécessite pas d’infrastructure à clé publique. Divers types d’applications peuvent l’utiliser, y compris des applications publiques comme les SPA et les applications mobiles.
mTLS vs. DPoP
Pour en savoir plus, consultez contrainte de l’expéditeur mTLS et démonstration de la preuve de possession (DPoP).