Auth0 vous permet d’ajouter rapidement l’authentification et d’accéder aux informations relatives au profil de l’utilisateur dans presque tous les types d’applications. Ce guide explique comment intégrer Auth0 à n’importe quelle application API ASP.NET Web, nouvelle ou existante, à l’aide du package
Microsoft.AspNetCore.Authentication.JwtBearer
.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 qui représente le projet avec lequel vous souhaitez effectuer l’intégration.Vous pouvez également consulter notre guide de démarrage, qui vous aidera à configurer votre première API via Auth0 Dashboard.Notez que chaque API dans Auth0 est configurée à l’aide d’un identifiant d’API; votre code d’application utilisera l’identifiant d’API comme Public 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 accorder 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
Pour permettre à votre application de valider les jetons d’accès, ajoutez une référence au package NuGet
Microsoft.AspNetCore.Authentication.JwtBearer
:3
Configurer le logiciel médiateur
Configurez le logiciel médiateur d’authentification dans le fichier
Program.cs
de votre application :-
Enregistrez les services d’authentification en appelant la méthode
AddAuthentication
. ConfigurezJwtBearerDefaults.AuthenticationScheme
comme schéma par défaut. -
Enregistrez le schéma d’authentification du porteur JWT en faisant un appel à la méthode
AddJwtBearer
. Configurez votre domaine Auth0 comme autorité et votre identifiant API Auth0 comme public, et assurez-vous que votre domaine Auth0 et votre identifiant API sont définis dans le fichier appsettings.json de votre application. OPEN|INFO Dans certains cas, le jeton d’accès n’aura pas desub
demande; dans ce cas, le nomUser.Identity.Name
seranull
. Si vous souhaitez mapper une demande différente àUser.Identity.Name
, ajoutez-la auxoptions.TokenValidationParameters
dans l’appelAddJwtBearer()
. CLOSE|INFO . -
Ajoutez l’authentification et l’autorisation de le logiciel médiateur au pipeline du logiciel médiateur en ajoutant des appels aux méthodes
UseAuthentication
etUseAuthorization
sous la méthodevar app = builder.Build();
.
4
Valider les permissions
Pour s’assurer qu’un jeton d’accès contient les permissions adéquates, utilisez Policy-Based Authorization (Autorisation basée sur une politique) dans ASP.NET Core :
- Créez une nouvelle exigence d’autorisation appelée
HasScopeRequirement
, qui vérifiera si la demande descope
émise par votre locataire Auth0 est présente et, le cas échéant, vérifiera que la demande contient la permission demandée. - Dans la méthode
var builder = WebApplication.CreateBuilder(args);
du fichierProgram.cs
, ajoutez un appel à la méthodeapp.AddAuthorization
. - Ajoutez des politiques pour les permissions en appelant
AddPolicy
pour chaque permission. - Enregistrez un singleton pour la classe
HasScopeHandler
.
5
Protéger les points de terminaison des API
Le logiciel médiateur JWT s’intègre aux mécanismes d’authentification et d’autorisation standard de ASP.NET Core.Pour sécuriser un point de terminaison, ajoutez l’attribut
[Authorize]
à votre action de contrôleur (ou à tout le contrôleur si vous souhaitez protéger toutes ses actions).Lors de la sécurisation des points de terminaison qui nécessitent des permissions particulières, assurez-vous que la bonne permission est présente dans access_token
. Pour ce faire, ajoutez l’attribut Authorize
à l’action Scoped
et passez read:messages
comme paramètre de la policy
.6
Appeler votre API
La façon dont vous appelez votre API dépend du type d’application que vous développez et du cadre que vous utilisez. Pour en savoir plus, lire le Guide rapide de l’application concernée :Exemple de demandeAppelez le point de terminaison
Obtenir un jeton d’accès
Quel que soit le type d’application que vous développez ou le cadre que vous utilisez, vous aurez besoin d’un jeton d’accès pour appeler votre API.Si vous appelez votre API à partir d’une application à page unique (SPA) ou native, vous recevrez un jeton d’accès une fois l’autorisation obtenue.Si vous appelez l’API à partir d’un outil de ligne de commande ou d’un autre service sans identifiants utilisateur, utilisez le Flux des identifiants client d’OAuth. Pour ce faire, enregistrez une Application de communication entre machines et incluez les valeurs suivantes à votre requête :- ID client comme paramètre
client_id
. - Secret client comme paramètre
client_secret
. - Identifiant API (la même valeur utilisée pour configurer l’intergiciel plus tôt dans ce guide rapide) comme paramètre
audience
.
Pour en savoir plus sur l’obtention de l’identificateur client et du secret client pour votre application de communication entre machines, lisez la section Paramètres de l’application.
Appeler un point de terminaison sécurisé
Maintenant que vous avez un jeton d’accès, vous pouvez l’utiliser pour appeler des points de terminaison API sécurisés. Lorsque vous appelez un point de terminaison sécurisé, vous devez inclure le jeton d’accès en tant que jeton de porteur dans l’en-tête Authorization de la requête. Par exemple, vous pouvez faire une requête au point de terminaison/api/private
:/api/private-scoped
de manière similaire, mais assurez-vous que les autorisations API sont configurées correctement et que le jeton d’accès inclut la permission read:messages
.Point de contrôle
Vous devriez maintenant pouvoir appeler les points de terminaison/api/private
et /api/private-scoped
.
Exécutez votre application et vérifiez que :
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