Introduction à la sécurité dans
ASP.NET Core
Anthony Giretti
Développeur sénior ASP.NET chez Spiria
anthony.giretti@gmail.com
http://anthonygiretti.com
La sécurité
• Le mécanisme d’authentification
• Les autorisations
• La protection des données
• SSL et Https
• Anti-Request Forgery
• Prévention des attaques XSS
• Autorisation /rejet des requêtes Cross-Origin
La sécurité
L’authentification avec ASP.NET Core Identity
• Introduction à ASP.NET Core Identity
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 utiliser un fournisseur de connexion tel que Facebook,
Compatible avec SQL Server, Azure Storage Table
La sécurité
L’authentification avec ASP.NET Core Identity
• Exemple avec les comptes utilisateurs individuels
ASP.NET Core Identity fortement couplé avec EntityFramework (package
Microsoft.AspNetCore.Identity.EntityFrameworkCore)
La sécurité
L’authentification avec ASP.NET Core Identity
La sécurité
L’authentification avec ASP.NET Core Identity
• Configuration du service
La sécurité
L’authentification avec ASP.NET Core Identity
• Activation du service
La sécurité
L’authentification avec ASP.NET Core Identity
• Instanciation dans un controlleur
La sécurité
L’authentification avec ASP.NET Core Identity
• Création d’un utilisateur
La sécurité
L’authentification avec ASP.NET Core Identity
• Authentification d’un utilisateur
La sécurité
L’authentification avec ASP.NET Core Identity
• LogOff
La sécurité
L’authentification avec ASP.NET Core Identity
La sécurité
L’authentification avec ASP.NET Core Identity
La sécurité
L’authentification avec ASP.NET Core Identity
(Démo sur mon pc)
•  Tutoriel complet ici :
https://docs.asp.net/en/latest/security/authentication/i
dentity.html
La sécurité
L’authentification avec ASP.NET Core Identity
• Features associées :
Authentification avec Facebook, Google et autres fournisseurs externes
(https://docs.asp.net/en/latest/security/authentication/sociallogins.html)
Support de OAuth 2.0
(https://docs.asp.net/en/latest/security/authentication/oauth2.html)
Confirmation de compte et récupération de mot de passe sécurisée
(https://docs.asp.net/en/latest/security/authentication/accconfirm.html)
Authentification par SMS
(https://docs.asp.net/en/latest/security/authentication/2fa.html)
La sécurité
L’authentification sans ASP.NET Core Identity
Utilisation des Cookies classiques (via HttpContext.Request.Cookies)
Utilisation des Cookies Middleware
Claim-based (cf : WIF)
Permettent de sérialiser les informations d’utilisateur (Principal) et d’encrypter dans un cookie
Capable via des évènements de valider son intégrité
De recréer le Principal et de l’assigner à l’objet User de HttpContext
La sécurité
L’authentification sans ASP.NET Core Identity
• Configuration
La sécurité
L’authentification sans ASP.NET Core Identity
• Exemple de login
La sécurité
L’authentification sans ASP.NET Core Identity
• Exemple de page nécessitant d’être authentifié
La sécurité
L’authentification sans ASP.NET Core Identity
• LogOff
La sécurité
L’authentification sans ASP.NET Core Identity
• Gestionnaire d’évènement, exemple en vas de modification d’une
information de l’utilisateur principal courant.
La sécurité
L’authentification sans ASP.NET Core Identity
(Démo sur mon pc)
•  Tutoriel complet ici :
https://docs.asp.net/en/latest/security/authentication/c
ookie.html
La sécurité
Les autorisations avec ASP.NET Core
• Introduction aux autorisations :
On retrouve les attributs AuthorizeAttribute et AllowAnonymousAttribute
On les retrouve dans le namespace Microsoft.AspNetCore.Authorization
 Simple Authorization
 Role based Authorization
 Claims-Based Authorization
 Custom Policy-Based Authorization
La sécurité
Les autorisations avec ASP.NET Core
• Reprenons l’exemple avec les cookies
La sécurité
Les autorisations avec ASP.NET Core
• Les autorisations simples
La sécurité
Les autorisations avec ASP.NET Core
• Les autorisations basées sur des rôles
La sécurité
Les autorisations avec ASP.NET Core
• Configuration des autorisation basées sur les claims
La sécurité
Les autorisations avec ASP.NET Core
• Exemple
La sécurité
Les autorisations avec ASP.NET Core
• Pour aller plus loin….
Il est possible de créer des policies plus élaborées
Il est aussi possible de créer ses propres Handlers
(https://docs.asp.net/en/latest/security/authorization/policies.html)
La sécurité
La protection des données avec .NET Core
• Introduction :
Toute nouvelle feature de .NET Core
Propose 3 manières de protéger ses données
 Data Protection (cryptage à vocation non durable basée sur une clé et un lifetime défini, réversible)
 Hashing (encodage irréversible, recommandé pour les mots de passes)
 Encryption (cryptage à vocation durable, réversible)
La sécurité
La protection des données avec .NET Core
• Configuration du Data Protection :
Dépendance au namespace Microsoft.AspNetCore.DataProtection
La sécurité
La protection des données avec .NET Core
• Exemple d’utilisation du Data Protection
La sécurité
La protection des données avec .NET Core
• Implémentation d’une classe statique de :
Dépendance au namespace Microsoft.Cryptography.KeyDerivation
La sécurité
La protection des données avec .NET Core
• Introduction à la nouvelle librairie d’encryption
Basée sur 2 nouvelle interface : IAuthenticatedEncryptor et
IAuthenticatedEncryptorDescriptor
Description ici : https://docs.asp.net/en/latest/security/data-
protection/extensibility/core-crypto.html
Merci! C’était :
Introduction à la sécurité dans
ASP.NET Core
Anthony Giretti
Développeur sénior ASP.NET chez Spiria
anthony.giretti@gmail.com
http://anthonygiretti.com
Code source de cette présentation : https://github.com/AnthonyGiretti/aspnetcoresecurity

Introduction à la sécurité dans ASP.NET Core

  • 1.
    Introduction à lasécurité dans ASP.NET Core Anthony Giretti Développeur sénior ASP.NET chez Spiria anthony.giretti@gmail.com http://anthonygiretti.com
  • 2.
    La sécurité • Lemécanisme d’authentification • Les autorisations • La protection des données • SSL et Https • Anti-Request Forgery • Prévention des attaques XSS • Autorisation /rejet des requêtes Cross-Origin
  • 3.
    La sécurité L’authentification avecASP.NET Core Identity • Introduction à ASP.NET Core Identity 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 utiliser un fournisseur de connexion tel que Facebook, Compatible avec SQL Server, Azure Storage Table
  • 4.
    La sécurité L’authentification avecASP.NET Core Identity • Exemple avec les comptes utilisateurs individuels ASP.NET Core Identity fortement couplé avec EntityFramework (package Microsoft.AspNetCore.Identity.EntityFrameworkCore)
  • 5.
  • 6.
    La sécurité L’authentification avecASP.NET Core Identity • Configuration du service
  • 7.
    La sécurité L’authentification avecASP.NET Core Identity • Activation du service
  • 8.
    La sécurité L’authentification avecASP.NET Core Identity • Instanciation dans un controlleur
  • 9.
    La sécurité L’authentification avecASP.NET Core Identity • Création d’un utilisateur
  • 10.
    La sécurité L’authentification avecASP.NET Core Identity • Authentification d’un utilisateur
  • 11.
    La sécurité L’authentification avecASP.NET Core Identity • LogOff
  • 12.
  • 13.
  • 14.
    La sécurité L’authentification avecASP.NET Core Identity (Démo sur mon pc) •  Tutoriel complet ici : https://docs.asp.net/en/latest/security/authentication/i dentity.html
  • 15.
    La sécurité L’authentification avecASP.NET Core Identity • Features associées : Authentification avec Facebook, Google et autres fournisseurs externes (https://docs.asp.net/en/latest/security/authentication/sociallogins.html) Support de OAuth 2.0 (https://docs.asp.net/en/latest/security/authentication/oauth2.html) Confirmation de compte et récupération de mot de passe sécurisée (https://docs.asp.net/en/latest/security/authentication/accconfirm.html) Authentification par SMS (https://docs.asp.net/en/latest/security/authentication/2fa.html)
  • 16.
    La sécurité L’authentification sansASP.NET Core Identity Utilisation des Cookies classiques (via HttpContext.Request.Cookies) Utilisation des Cookies Middleware Claim-based (cf : WIF) Permettent de sérialiser les informations d’utilisateur (Principal) et d’encrypter dans un cookie Capable via des évènements de valider son intégrité De recréer le Principal et de l’assigner à l’objet User de HttpContext
  • 17.
    La sécurité L’authentification sansASP.NET Core Identity • Configuration
  • 18.
    La sécurité L’authentification sansASP.NET Core Identity • Exemple de login
  • 19.
    La sécurité L’authentification sansASP.NET Core Identity • Exemple de page nécessitant d’être authentifié
  • 20.
    La sécurité L’authentification sansASP.NET Core Identity • LogOff
  • 21.
    La sécurité L’authentification sansASP.NET Core Identity • Gestionnaire d’évènement, exemple en vas de modification d’une information de l’utilisateur principal courant.
  • 22.
    La sécurité L’authentification sansASP.NET Core Identity (Démo sur mon pc) •  Tutoriel complet ici : https://docs.asp.net/en/latest/security/authentication/c ookie.html
  • 23.
    La sécurité Les autorisationsavec ASP.NET Core • Introduction aux autorisations : On retrouve les attributs AuthorizeAttribute et AllowAnonymousAttribute On les retrouve dans le namespace Microsoft.AspNetCore.Authorization  Simple Authorization  Role based Authorization  Claims-Based Authorization  Custom Policy-Based Authorization
  • 24.
    La sécurité Les autorisationsavec ASP.NET Core • Reprenons l’exemple avec les cookies
  • 25.
    La sécurité Les autorisationsavec ASP.NET Core • Les autorisations simples
  • 26.
    La sécurité Les autorisationsavec ASP.NET Core • Les autorisations basées sur des rôles
  • 27.
    La sécurité Les autorisationsavec ASP.NET Core • Configuration des autorisation basées sur les claims
  • 28.
    La sécurité Les autorisationsavec ASP.NET Core • Exemple
  • 29.
    La sécurité Les autorisationsavec ASP.NET Core • Pour aller plus loin…. Il est possible de créer des policies plus élaborées Il est aussi possible de créer ses propres Handlers (https://docs.asp.net/en/latest/security/authorization/policies.html)
  • 30.
    La sécurité La protectiondes données avec .NET Core • Introduction : Toute nouvelle feature de .NET Core Propose 3 manières de protéger ses données  Data Protection (cryptage à vocation non durable basée sur une clé et un lifetime défini, réversible)  Hashing (encodage irréversible, recommandé pour les mots de passes)  Encryption (cryptage à vocation durable, réversible)
  • 31.
    La sécurité La protectiondes données avec .NET Core • Configuration du Data Protection : Dépendance au namespace Microsoft.AspNetCore.DataProtection
  • 32.
    La sécurité La protectiondes données avec .NET Core • Exemple d’utilisation du Data Protection
  • 33.
    La sécurité La protectiondes données avec .NET Core • Implémentation d’une classe statique de : Dépendance au namespace Microsoft.Cryptography.KeyDerivation
  • 34.
    La sécurité La protectiondes données avec .NET Core • Introduction à la nouvelle librairie d’encryption Basée sur 2 nouvelle interface : IAuthenticatedEncryptor et IAuthenticatedEncryptorDescriptor Description ici : https://docs.asp.net/en/latest/security/data- protection/extensibility/core-crypto.html
  • 35.
    Merci! C’était : Introductionà la sécurité dans ASP.NET Core Anthony Giretti Développeur sénior ASP.NET chez Spiria anthony.giretti@gmail.com http://anthonygiretti.com Code source de cette présentation : https://github.com/AnthonyGiretti/aspnetcoresecurity