Vous découvrez Auth0? Découvrez comment fonctionne Auth0 et renseignez-vous sur la mise en œuvre de l’authentification et de l’autorisation des API à l’aide du protocole OAuth 2.0.
Pour commencer
Microsoft.Owin.Security.Jwt. Chaque API Auth0 utilise un identifiant d’API, dont votre application a besoin pour valider le jeton d’accès.
Cet exemple montre :
- Comment vérifier la présence d’un JSON Web Token (JWT) dans l’en-tête
Authorizationd’une requête HTTP entrante. - Comment vérifier si le jeton est valide à l’aide du JSON Web Key Set (JWKS) de votre compte Auth0. Pour en savoir plus sur la validation des jetons d’accès, consultez Validate Access Tokens.
Créer une API
Dans la section APIs du tableau de bord Auth0, cliquez sur Create API. Entrez un nom et un identifiant pour votre API, par exemple
Par défaut, votre API utilise RS256 comme algorithme de signature des jetons. Comme RS256 utilise une paire de clés privée/publique, les jetons sont vérifiés à l’aide de la clé publique de votre compte Auth0. La clé publique est au format JSON Web Key Set (JWKS) et est accessible ici.
https://quickstarts/api. Vous utiliserez plus tard cet identifiant comme audience, au moment de configurer la vérification du jeton d’accès. Laissez Signing Algorithm à RS256.
Définir les permissions
Les permissions vous permettent de définir comment les ressources peuvent être accessibles au nom de l’utilisateur à l’aide d’un jeton d’accès donné. Par exemple, vous pouvez choisir d’accorder un accès en lecture à la ressource 
messages si les utilisateurs ont le niveau d’accès de gestionnaire, et un accès en écriture à cette ressource s’ils ont le niveau d’accès d’administrateur.Vous pouvez définir les permissions autorisées dans la vue Permissions de la section APIs du tableau de bord Auth0.
Cet exemple utilise la portée
read:messages.Configurer le projet d’exemple
Le code d’exemple comprend une section
appsettings dans Web.config qui est configurée pour utiliser le bon domaine Auth0 et le bon identifiant d’API pour votre API. Si vous téléchargez le code à partir de cette page, ces valeurs seront automatiquement renseignées. Si vous utilisez l’exemple de GitHub, vous devrez les renseigner vous-même.web.config
Installer les dépendances
Pour utiliser les jetons d’accès Auth0 avec ASP.NET, vous utiliserez l’intergiciel JWT OWIN, offert dans le package NuGet
Microsoft.Owin.Security.Jwt.Vérifier la signature du jeton
Comme le middleware OWIN JWT n’utilise pas OpenID Connect Discovery par défaut, vous devrez fournir un Le
IssuerSigningKeyResolver personnalisé. Pour ce faire, ajoutez ce qui suit au fichier Support/OpenIdConnectSigningKeyResolver.cs :Un tel résolveur personnalisé a déjà été publié dans le package
Auth0.OpenIdConnectSigningKeyResolver sur NuGet. Comme ce package n’est plus disponible, vous devrez le fournir vous-même.OpenIdConnectSigningKeyResolver.cs
OpenIdConnectSigningKeyResolver téléchargera automatiquement le JSON Web Key Set utilisé pour signer les jetons RS256 à partir du point de terminaison de configuration OpenID Connect (à /.well-known/openid-configuration). Vous pourrez ensuite l’utiliser pour résoudre la clé de signature de l’émetteur, comme le montre le code d’enregistrement JWT ci-dessous.Configurer l’authentification JWT
Accédez à la méthode
Configuration de votre classe Startup et ajoutez un appel à UseJwtBearerAuthentication en lui transmettant les JwtBearerAuthenticationOptions configurées.Les JwtBearerAuthenticationOptions doivent préciser l’identifiant de votre API Auth0 dans la propriété ValidAudience, ainsi que le chemin complet de votre domaine Auth0 dans ValidIssuer. Vous devrez configurer IssuerSigningKeyResolver pour utiliser l’instance de OpenIdConnectSigningKeyResolver afin de résoudre la clé de signature :Startup.cs
Valider les portées
L’intergiciel JWT ci-dessus vérifie que le jeton d’accès inclus dans la requête est valide; toutefois, il ne comprend pas encore de mécanisme permettant de vérifier que le jeton dispose du scope nécessaire pour accéder aux ressources demandées.Créez une classe nommée
ScopeAuthorizeAttribute qui hérite de System.Web.Http.AuthorizeAttribute. Cet attribut d’autorisation vérifiera que la revendication scope émise par votre tenant Auth0 est présente et, le cas échéant, s’assurera qu’elle contient le scope demandé.ScopeAuthorizeAttribute.cs
Sécuriser les points de terminaison de l’API
Les routes ci-dessous sont accessibles pour les requêtes suivantes :
GET /api/public: accessible pour les requêtes non authentifiéesGET /api/private: accessible pour les requêtes authentifiées contenant un jeton d’accès sans portée supplémentaireGET /api/private-scoped: accessible pour les requêtes authentifiées contenant un jeton d’accès auquel la portéeread:messagesa été accordée
[Authorize] pour sécuriser un point de terminaison. Pour vous assurer qu’une portée est présente avant d’appeler un point de terminaison d’API particulier, décorez l’action avec l’attribut ScopeAuthorize et passez le nom de la portée requise dans le paramètre scope.ApiController.cs
Point de contrôleMaintenant que vous avez configuré votre application, exécutez-la et vérifiez que :
GET /api/publicest accessible sans authentification.GET /api/privateest accessible avec authentification.GET /api/private-scopedest accessible avec authentification lorsque le jeton d’accès inclut la portéeread:messages.
Ressources supplémentaires
Exemple d’application
Exemple d’application complet pour ce guide de démarrage rapide
Fournisseurs d’identité
Configurer d’autres fournisseurs d’identité
Authentification multifacteur
Activer l’authentification multifacteur
Protection contre les attaques
En savoir plus sur la protection contre les attaques
Règles
Étendre Auth0 avec une logique personnalisée
Forum de la communauté
Obtenir de l’aide auprès de la communauté Auth0