Authentifiants d’application
Les applications confidentielles, contrairement aux applications publiques, peuvent stocker les identifiants de manière sécurisée. Lorsque des applications confidentielles demandent des jetons d’accès ou d’ID au point de terminaison du jeton, l’application doit s’authentifier auprès du serveur d’autorisation. Pendant cette requête pour des jetons, l’application fournit des identifiants connus par l’application. En outre, les identifiants d’application peuvent également offrir une protection d’authenticité et d’intégrité pour les paramètres de demande envoyés au point de terminaison /authorize
.
Pour en savoir plus sur les applications confidentielles par rapport à publiques, lisez Applications confidentielles et publiques.
Méthodes d’authentification des applications
Pour obtenir des jetons d’Auth0, votre application doit s’authentifier par l’Authentication API. Auth0 prend en charge les méthodes suivantes d’authentification de vos applications :
Client Secret (Secret client) : Méthode d’authentification symétrique. Dans l’authentification par secret client, vous pouvez utiliser le secret client Auth0 généré lorsque vous avez créé l’application.
Private Key JWT (JWT (Clé privée JWT) : Méthode d’authentification asymétrique. Avec la clé privée JWT, vous générez une paire de clés, publique et privée, afin de les utiliser comme identifiants. Vous fournissez une clé publique et stockez de manière sécurisée la clé privée dans vos propres systèmes sans la partager avec Auth0.
mTLS pour OAuth : Méthode d’authentification asymétrique. Dans le cadre de mTLS pour OAuth, enregistrez un certificat client X.509 standard avec Auth0. Ensuite, vous utilisez la clé privée correspondante pour établir en toute sécurité le tunnel mTLS afin d’envoyer des demandes vers les points de terminaison de votre locataire Auth0.
Authentification par secret client
L’authentification par secret client est une méthode d’authentification symétrique incluse dans la spécification OAuth 2.0. L’authentification par secret client est l’authentification par défaut comprise dans Auth0.
Cette méthode d’authentification est prise en charge par tous les outils et toutes les applications. Le secret client est une valeur à haute entropie générée par Auth0 lorsque vous créez une application et est connue tant de votre application que d’Auth0. Votre application authentifie en incluant le secret client dans la requête au serveur d’autorisations.
Certains risques de sécurité sont associés à l’utilisation du secret client comme identifiant, spécialement dans les scénarios avec des demandes de sécurité élevées :
Le secret utilisé par cette application est partagé avec Auth0.
Le secret est envoyé sur le réseau et pourrait être intercepté en cas d’attaques par interception.
Une application peut avoir un seul secret client. Il n’est pas possible d’effectuer une rotation du secret lorsque vous mettez à jour votre implémentation avec le nouveau secret. Pour en savoir plus, lisez Faire la rotation des secrets client.
Authentification par clé privée JWT
L’Authentification par clé privée JWT est une authentification asymétrique qui associe des paires de clés privées et publiques. Pour en savoir plus, lisez Profil jeton Web JSON (JWT) pour l’authentification du client OAuth 2.0 et les octrois d’autorisation.
Vous pouvez utiliser l'Auth0 Dashboard ou le Management API Auth0 pour configurer un locataire pour utiliser une clé privée JWT. Pour en savoir plus, lisez Configurer l’authentification par clé privée JWT
Avec une clé privée JWT, une demande au serveur d’authentification consiste en deux étapes :
Configurer des clés privées et publiques :
Générer une paire de clés (une publique et une privée).
Enregistrez la clé privée avec l’application en effectuant la requête et en enregistrant la clé publique avec le fournisseur d’identités (IdP).
Créez des affirmations de requêtes pour le serveur d’autorisations.
Créez une nouvelle affirmation avec des demandes spécifiques au format JWT et signez avec une clé privée. Incluez cette affirmation dans la requête à l’IdP.
L’IdP valide l’affirmation en utilisant une clé publique.
Pour configurer la clé privée JWT pour Auth0, lisez Configurer l’authentification par clé privée JWT. Pour en savoir plus sur la création d’une affirmation pour clé privée JWT, lisez Authentifier par clé privée JWT.
Il existe des avantages de sécurité associés à l’utilisation d’une clé privée JWT :
La clé privée n’est pas transmise sur le réseau et réduit l’exposition au risque pour les identifiants de votre application. Les fournisseurs d’identités n’ont pas connaissance de la clé privée, et seules les applications ayant accès à la clé privée peuvent effectuer des requêtes d’authentification.
Les affirmations signées ont un délai d’expiration court, limitant la fenêtre d’opportunité pour les attaques par réinsertion.
mTLS pour OAuth
mTLS pour OAuth authentifie les demandes adressées au serveur d’autorisation à l’aide d’un protocole TLS mutuel basé sur des certificats auto-signés ou une infrastructure à clé publique (PKI). Lisez S’authentifier avec mTLS pour en savoir plus sur le fonctionnement de l’authentification mTLS dans Auth0.
mTLS d’Auth0 pour OAuth cible initialement les clients des secteurs significativement réglementés, tels que la finance et la santé, qui ont probablement déjà des déploiements mTLS. Pour simplifier l’adoption par les clients, la fonctionnalité mTLS s’appuie sur des domaines personnalisés et utilise l’infrastructure mTLS existante du client pour effectuer la fourniture et la vérification des certificats. Pour en savoir plus sur l’authentification avec mTLS et mettre en place votre réseau de périphérie, lisez S’authentifier avec mTLS et Configurez votre périphérie client.
Pour apprendre à configurer mTLS, lisez Configurer l’authentification mTLS. Une fois que vous avez configuré votre réseau de périphérie et mTLS, votre application doit établir le tunnel mTLS pour envoyer des demandes à Auth0, comme expliqué dans Appeler le serveur d’autorisation.
Dans mTLS, la clé privée du certificat client n’est pas transmise sur le réseau, ce qui réduit le risque d’exposer les identifiants de votre application. Les fournisseurs d’identité comme Auth0 n’ont pas accès à la clé privée. Seules les applications ayant accès à la clé privée peuvent s’authentifier.
Demande d’autorisation sécurisées JWT (JAR)
Une demande d’autorisation sécurisées JWT (JAR) est une extension du protocole OAuth2 qui renforce la sécurité des demandes d’autorisation. Cela se fait à l’aide d’un paramètre de requête Jeton Web JSON (JWT) pour protéger l’intégrité et la confidentialité des paramètres de requête d’autorisation.
Vous pouvez utilisez l’ Management API Auth0 pour configurer JAR pour votre application. L’implémentation d’Auth0 pour la JAR utilise la cryptographie asymétrique, où vous enregistrez la clé publique tout en stockant en toute sécurité la clé privée de votre côté. Pour en savoir plus, lisez Configurer les demandes d’autorisation sécurisées JWT.
Lors de l’utilisation de JAR, le client crée un JWT qui englobe les paramètres de la demande d’autorisation, le signe avec sa clé privée et l’envoie au serveur d’autorisation. Le serveur d’autorisation vérifie ensuite la signature à l’aide de la clé publique du client, et si la signature est valide, il extrait les paramètres de la demande d’autorisation du JWT et traite la demande comme d’habitude. Pour en savoir plus sur comment utiliser la JAR, veuillez consulter Flux de code d’autorisation avec demandes d’autorisation sécurisées JWT (JAR).
Enregistrement des clés et des certificats
Vous pouvez enregistrer vos deux clés publiques pour une application en même temps. Auth0 gère la vérification en vérifiant la bonne clé et permet une rotation sans temps d’arrêt. Une fois qu’une vieille clé a été retirée ou désactivée, toutes les requêtes signées avec la clé privée correspondante sont invalidées.
Remarque : Auth0 prend en charge les algorithmes suivants pour l’authentification des applications et la signature des demandes d’autorisation : RS256, RS384 et PS256. Veuillez vous assurer de leur fournir les clés appropriées. Pour en savoir plus, lisez Configurer l’authentification JWT privée et Configurez les demandes d’autorisation sécurisées JWT.
De même, pour les certificats clients mTLS, vous pouvez enregistrer simultanément deux certificats client X.509 (auto-signés ou avec le DN du sujet du certificat CA) pour une application. Auth0 gère la vérification des deux certificats clients, ce qui vous permet de faire pivoter les certificats sans temps d’arrêt.
Mettre à jour la méthode d’authentification de l’application
Vous pouvez mettre à jour la méthode d’authentification d’une application dans le Auth0 Dashboard (Tableau de bord Auth0). Pour en savoir plus, consultez Credential Settings (Paramètres d’identifiants).