Logo Spiria

Introduction à ASP.NET Core Identity

11 octobre 2016.

ASP.NET Core Identity est un système d’abonnement permettant d’ajouter des fonctionnalités de connexion à son application, en utilisant un nom d’utilisateur et un mot de passe, ou encore un fournisseur de connexion tel que Facebook, Google ou autre service externe.Il est compatible avec SQL Server, Azure Storage Table.

Login Window.

ASP.NET Core Identity est un système d’abonnement permettant d’ajouter des fonctionnalités de connexion à son application, en utilisant un nom d’utilisateur et un mot de passe, ou encore un fournisseur de connexion tel que Facebook, Google ou autre service externe.

Il est compatible avec SQL Server, Azure Storage Table.

ASP.NET Core Identity est fortement couplé à Entity Framework. Pour l’utiliser, il faut donc télécharger le package Microsoft.AspNetCore.Identity.EntityFrameworkCore.

On peut voir ci-dessous les dépendances associées :

decorative

 

Exemple d’utilisation avec les comptes d’utilisateur individuels

1. Après avoir créé une une application web ASP.NET Core, cliquer sur “Modifier l’authentification” et sélectionner “Comptes d’utilisateur individuels”.

decorative

2. Configuration d’ASP.NET Core Identity.

Dans le Startup.cs, la méthode ConfigureServices va se voir dans notre cas ajouter le service AddIdentity automatiquement, avec ApplicationUser qui représente la classe concrète décrivant l’utilisateur courant, héritant de l’interface Identity et de IdentityRole pour les rôles.

AddEntityFrameworkStores est également présent, l’utilisateur courant représenté par ApplicationUser se verra populé à partir du magasin de données (le DbContext) ApplicationDbContext autogénéré par défaut à la création de notre projet.

Enfin, un fournisseur de jetons est ajouté par défaut, nommé AddDefaultTokenProviders. Il permet de générer des jetons de sécurité dans les opérations menées sur les comptes (création d’un mot de passe crypté par exemple).

3. Activation d’ASP.NET Core Identity.

Toujours dans le Startup.cs, dans notre cas où l’application est préconfigurée avec l’utilisation d’Identity, la méthode Configure va se voir ajouter app.UseIdentity.

4. Configuration d’un contrôleur MVC.

L’injection de dépendance a été configurée par défaut pour Identity dans notre cas, deux services ont été utilisés :

  • UserManager pour la gestion de l’utilisateur (création d’un compte, modification de mot de passe…).
  • SignInManager pour la gestion de l’authentification et de la déconnexion.

decorative

5. La création d’un utilisateur.

La méthode CreateAsync du service UserManager est employée pour la création d’un utilisateur. On notera qu’elle est “awaitable” donc asynchrone.

decorative

6. L’authentification d’un utilisateur.

Pour authentifier l’utilisateur, la méthode PasswordSignInAsync du service SignInManager sera utilisée, elle est également asynchrone.

7. La déconnexion.

La méthode à employer ici est SignOutAsync du service SignInManager.

decorative

8. La génération de la base de données à la première exécution.

Dans la console de gestionnaire de package, il faut taper la commande suivante :

PM> Update-Database

La base de données par défaut d’ASP.NET Identity Core sera générée :

decorative

9. Vérification du cookie généré à l’authentification.

Le cookie généré dans notre cas aura le nom par défaut : AspNetCore.Identity.Application.

decorative

 

Pour plus de détails sur ASP.NET Core Identity, voici la documentation officielle ASP.NET : https://docs.asp.net/en/latest/security/authentication/identity.html