Nouveau sur Auth0 ? Découvrez le fonctionnement d’Auth0 et apprenez-en davantage sur la mise en œuvre de l’authentification et de l’autorisation d’API à l’aide du framework OAuth 2.0.
Pour commencer
Microsoft.Owin.Security.Jwt. Chaque API Auth0 utilise l’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 Valider les jetons d’accès.
1
Créer une API
Dans la section APIs du Dashboard 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 vous pouvez y accéder ici.
https://quickstarts/api. Vous utiliserez cet identifiant plus tard comme audience, au moment de configurer la vérification du jeton d’accès. Laissez l’algorithme de signature à RS256.
2
Définir les autorisations
Les permissions vous permettent de définir comment les ressources peuvent être consultées au nom de l’utilisateur à l’aide d’un jeton d’accès donné. Par exemple, vous pourriez choisir d’accorder un accès en lecture à la ressource 
messages si les utilisateurs ont le niveau d’accès Manager, et un accès en écriture à cette ressource s’ils ont le niveau d’accès Admin.Vous pouvez définir les permissions autorisées dans la vue Permissions de la section APIs de l’Auth0 Dashboard.
Cet exemple utilise la portée
read:messages.3
Configurer le projet d’exemple
L’exemple de code contient une section
appsettings dans Web.config qui permet de le configurer 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, elle sera remplie automatiquement. Si vous utilisez l’exemple sur Github, vous devrez la remplir vous-même.web.config
4
Installer les dépendances
Pour utiliser les Access Tokens Auth0 avec ASP.NET, vous devrez utiliser le middleware JWT pour OWIN, offert dans le package NuGet
Microsoft.Owin.Security.Jwt.5
Vérifier la signature du token
Comme le middleware JWT OWIN n’utilise pas le mécanisme Discovery d’OpenID Connect 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é était auparavant publié dans le package
Auth0.OpenIdConnectSigningKeyResolver par l’entremise de 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 d’OpenID Connect (à /.well-known/openid-configuration). Vous pourrez ensuite l’utiliser pour retrouver la clé de signature de l’émetteur, comme le montre le code d’enregistrement JWT ci-dessous.6
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 indiquer l’identifiant de l’API Auth0 dans la propriété ValidAudience, ainsi que le chemin complet de votre domaine Auth0 dans ValidIssuer. Vous devrez configurer IssuerSigningKeyResolver pour qu’il utilise l’instance OpenIdConnectSigningKeyResolver afin de résoudre la clé de signature :Startup.cs
7
Valider les scopes
Le middleware 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 de la portée 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 claim scope émise par votre tenant Auth0 est présente et, le cas échéant, s’assurera que la claim scope contient la portée demandée.ScopeAuthorizeAttribute.cs
8
Protéger les points de terminaison de l’API
Les routes affichées ci-dessous sont disponibles pour les requêtes suivantes :
GET /api/public: disponible pour les requêtes non authentifiéesGET /api/private: disponible pour les requêtes authentifiées contenant un jeton d’accès sansscopessupplémentairesGET /api/private-scoped: disponible pour les requêtes authentifiées contenant un jeton d’accès auquel lescoperead:messagesa été accordé
[Authorize] pour sécuriser un point de terminaison. Pour vous assurer qu’un scope est présent avant d’effectuer une requête vers un point de terminaison d’API particulier, décorez l’action avec l’attribut ScopeAuthorize et transmettez le nom du scope requis dans le paramètre scope.ApiController.cs
VérificationMaintenant 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 lorsqu’un jeton d’accès comprend la portéeread:messages.
Ressources supplémentaires
Exemple d’application
Exemple d’application complet pour ce Quickstart
Fournisseurs d’identité
Configurer d’autres fournisseurs d’identité
Authentification multifactorielle
Activer l’authentification multifactorielle
Protection contre les attaques
En savoir plus sur la protection contre les attaques
Rules
Étendre Auth0 avec une logique personnalisée
Forum de la communauté
Obtenez de l’aide auprès de la communauté Auth0