Auth0 vous permet d’ajouter une autorisation à n’importe quel type d’application. Ce guide explique comment intégrer Auth0 à n’importe quelle application API ASP.NET Owin Web, nouvelle ou ancienne, à l’aide du package
Microsoft.Owin.Security.Jwt
.Si vous n’avez pas encore créé d’API dans votre Auth0 Dashboard, vous pouvez utiliser le sélecteur interactif pour créer une nouvelle API Auth0 ou sélectionner une API existante pour votre projet.Pour configurer votre première API via Auth0 Dashboard, consultez notre guide de démarrage.Chaque API Auth0 utilise l’identificateur API, dont votre application a besoin pour valider le jeton d’accès.Vous ne connaissez pas Auth0 ? Découvrez Auth0 et l’implémentation de l’authentification et de l’autorisation d’API en utilisant le cadre d’applications OAuth 2.0.
1
Définir les autorisations
Les autorisations vous permettent de définir comment les ressources peuvent être accessibles au nom de l’utilisateur avec un jeton d’accès donné. Par exemple, vous pouvez choisir d’accorder un accès en lecture à la ressource ![Auth0 Dashboard> Applications > APIs (API) > [Specific API (API précise)] > Onglet Permissions (Autorisations)](https://mintlify.s3.us-west-1.amazonaws.com/docs-dev/images/fr-ca/cdy7uua7fh8z/1s3Yp5zqJiKiSWqbPSezNO/677a3405b2853f5fdf9e42f6e83ceba7/Quickstarts_API_-_French.png)
messages
si les utilisateurs ont le niveau d’accès gestionnaire et un accès en écriture à cette ressource s’ils ont le niveau d’accès administrateur.Vous pouvez définir les autorisations autorisées dans la vue Permissions (Autorisations) de la section API d’Auth0 Dashboard. L’exemple suivant utilise la permission read:messages
.![Auth0 Dashboard> Applications > APIs (API) > [Specific API (API précise)] > Onglet Permissions (Autorisations)](https://mintlify.s3.us-west-1.amazonaws.com/docs-dev/images/fr-ca/cdy7uua7fh8z/1s3Yp5zqJiKiSWqbPSezNO/677a3405b2853f5fdf9e42f6e83ceba7/Quickstarts_API_-_French.png)
2
Installer les dépendances
Installez le NuGetPackage
Microsoft.Owin.Security.Jwt
. Ce package contient l’intergiciel OWIN JWT nécessaire pour utiliser les jetons d’accès Auth0 dans l’API Web ASP.NET Owin.3
Configurer l’intergiciel
Allez dans la méthode de
Configuration
de votre classe Startup
et ajoutez un appel à UseJwtBearerAuthentication
passant dans les JwtBearerAuthenticationOptions
configurées.JwtBearerAuthenticationOptions
doit indiquer votre identificateur API Auth0 dans la propriété ValidAudience
et le chemin complet vers votre domaine Auth0 en tant que ValidIssuer
. Vous devrez configurer l’instance IssuerSigningKeyResolver
pour utiliser l’instance OpenIdConnectSigningKeyResolver
afin de résoudre la clé de connexion.N’oubliez pas la barre oblique finale.
Assurez-vous que l’URL précisée pour
ValidIssuer
contient une barre oblique (/
) finale. Cela doit correspondre exactement à la demande de l’émetteur JWT. Les appels d’API ne s’authentifieront pas correctement si vous avez mal configuré cette valeur.4
Vérifier la signature du jeton
Le logiciel médiateur OWIN JWT n’utilise pas Open ID Connect Discovery par défaut, vous devez donc fournir un
IssuerSigningKeyResolver
personnalisé.Créez la classe OpenIdConnectSigningKeyResolver
et assurez-vous de retourner la bonne SecurityKey
en implémentant GetSigningKey
. Cette classe est ensuite utilisée comme TokenValidationParameters.IssuerSigningKeyResolver
lors de la configuration du logiciel médiateur dans Startup.cs
.5
Valider les permissions
Le logiciel médiateur JWT vérifie que le jeton d’accès inclus dans la requête est valide; cependant, il n’inclut pas encore de mécanisme pour vérifier que le jeton a une scope (permission) suffisante pour accéder aux ressources demandées.Créez une classe appelée
ScopeAuthorizeAttribute
qui hérite de System.Web.Http.AuthorizeAttribute
. Cet attribut vérifiera que la demande de scope
émise par votre locataire Auth0 est présente, et si oui, il assurera que la demande de scope
contient la permission demandée.6
Protéger les points de terminaison des API
Les routes ci-dessous sont disponibles pour les demandes suivantes :
GET /api/public
: Disponible pour les demandes non authentifiées.GET /api/private
: Disponible pour les demandes authentifiées contenant un jeton d’accès sans permission supplémentaire.GET /api/private-scoped
: Disponible pour les demandes authentifiées contenant un jeton d’accès dont la permissionread:messages
est accordée.
[Authorize]
pour obtenir un point de terminaison.Mettez à jour l’action avec l’attribut ScopeAuthorize
et passez le nom de la scope
requise dans le paramètre scope
. Cela garantit que la permission adéquate est disponible pour appeler un point de terminaison d’API donné.Point de contrôle
Maintenant que vous avez configuré votre application, lancez votre application et vérifiez que :GET /api/public
est disponible pour les demandes non authentifiées.
GET /api/private
est disponible pour les demandes authentifiées.
GET /api/private-scoped
est disponible pour les demandes authentifiées contenant un jeton d’accès avec la permission read:messages
.Étapes suivantes
Beau travail! Si vous en êtes arrivé là, vous devriez avoir la connexion, la déconnexion et les informations de profil utilisateur actives dans votre application.Cela conclut notre tutoriel de démarrage rapide, mais il y a tellement plus à explorer. Pour en savoir plus sur ce que vous pouvez faire avec Auth0, consultez :- Auth0 Dashboard : apprenez à configurer et gérer votre locataire et vos applications Auth0
- Auth0 Marketplace : découvrez des intégrations que vous pouvez activer pour étendre les fonctionnalités d’Auth0