introduction à la sécurité dans asp.net core

35
Introduction à la sécurité dans ASP.NET Core Anthony Giretti Développeur sénior ASP.NET chez Spiria [email protected] http://anthonygiretti.com

Upload: msdevmtl

Post on 15-Jan-2017

253 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Introduction à la sécurité dans ASP.NET Core

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

Anthony GirettiDéveloppeur sénior ASP.NET chez Spiria

[email protected]://anthonygiretti.com

Page 2: Introduction à la sécurité dans ASP.NET Core

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

Page 3: Introduction à la sécurité dans ASP.NET Core

La sécuritéL’authentification avec ASP.NET Core Identity

• Introduction à ASP.NET Core IdentitySystè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

Page 4: Introduction à la sécurité dans ASP.NET Core

La sécuritéL’authentification avec ASP.NET Core Identity

• Exemple avec les comptes utilisateurs individuelsASP.NET Core Identity fortement couplé avec

EntityFramework (package Microsoft.AspNetCore.Identity.EntityFrameworkCore)

Page 5: Introduction à la sécurité dans ASP.NET Core

La sécuritéL’authentification avec ASP.NET Core Identity

Page 6: Introduction à la sécurité dans ASP.NET Core

La sécuritéL’authentification avec ASP.NET Core Identity

• Configuration du service

Page 7: Introduction à la sécurité dans ASP.NET Core

La sécuritéL’authentification avec ASP.NET Core Identity

• Activation du service

Page 8: Introduction à la sécurité dans ASP.NET Core

La sécuritéL’authentification avec ASP.NET Core Identity

• Instanciation dans un controlleur

Page 9: Introduction à la sécurité dans ASP.NET Core

La sécuritéL’authentification avec ASP.NET Core Identity

• Création d’un utilisateur

Page 10: Introduction à la sécurité dans ASP.NET Core

La sécuritéL’authentification avec ASP.NET Core Identity

• Authentification d’un utilisateur

Page 11: Introduction à la sécurité dans ASP.NET Core

La sécuritéL’authentification avec ASP.NET Core Identity

• LogOff

Page 12: Introduction à la sécurité dans ASP.NET Core

La sécuritéL’authentification avec ASP.NET Core Identity

Page 13: Introduction à la sécurité dans ASP.NET Core

La sécuritéL’authentification avec ASP.NET Core Identity

Page 14: Introduction à la sécurité dans ASP.NET Core

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/identity.html

Page 15: Introduction à la sécurité dans ASP.NET Core

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)

Page 16: Introduction à la sécurité dans ASP.NET Core

La sécuritéL’authentification sans ASP.NET Core Identity

Utilisation des Cookies classiques (via HttpContext.Request.Cookies)

Utilisation des Cookies MiddlewareClaim-based (cf : WIF)Permettent de sérialiser les informations d’utilisateur (Principal) et

d’encrypter dans un cookieCapable via des évènements de valider son intégritéDe recréer le Principal et de l’assigner à l’objet User de HttpContext

Page 17: Introduction à la sécurité dans ASP.NET Core

La sécuritéL’authentification sans ASP.NET Core Identity

• Configuration

Page 18: Introduction à la sécurité dans ASP.NET Core

La sécuritéL’authentification sans ASP.NET Core Identity

• Exemple de login

Page 19: Introduction à la sécurité dans ASP.NET Core

La sécuritéL’authentification sans ASP.NET Core Identity

• Exemple de page nécessitant d’être authentifié

Page 20: Introduction à la sécurité dans ASP.NET Core

La sécuritéL’authentification sans ASP.NET Core Identity

• LogOff

Page 21: Introduction à la sécurité dans ASP.NET Core

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.

Page 22: Introduction à la sécurité dans ASP.NET Core

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/cookie.html

Page 23: Introduction à la sécurité dans ASP.NET Core

La sécuritéLes autorisations avec ASP.NET Core

• Introduction aux autorisations :On retrouve les attributs AuthorizeAttribute et AllowAnonymousAttributeOn les retrouve dans le namespace Microsoft.AspNetCore.Authorization

Simple Authorization Role based Authorization Claims-Based Authorization Custom Policy-Based Authorization

Page 24: Introduction à la sécurité dans ASP.NET Core

La sécuritéLes autorisations avec ASP.NET Core

• Reprenons l’exemple avec les cookies

Page 25: Introduction à la sécurité dans ASP.NET Core

La sécuritéLes autorisations avec ASP.NET Core

• Les autorisations simples

Page 26: Introduction à la sécurité dans ASP.NET Core

La sécuritéLes autorisations avec ASP.NET Core

• Les autorisations basées sur des rôles

Page 27: Introduction à la sécurité dans ASP.NET Core

La sécuritéLes autorisations avec ASP.NET Core

• Configuration des autorisation basées sur les claims

Page 28: Introduction à la sécurité dans ASP.NET Core

La sécuritéLes autorisations avec ASP.NET Core

• Exemple

Page 29: Introduction à la sécurité dans ASP.NET Core

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)

Page 30: Introduction à la sécurité dans ASP.NET Core

La sécuritéLa protection des données avec .NET Core

• Introduction :Toute nouvelle feature de .NET CorePropose 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)

Page 31: Introduction à la sécurité dans ASP.NET Core

La sécuritéLa protection des données avec .NET Core

• Configuration du Data Protection :Dépendance au namespace Microsoft.AspNetCore.DataProtection

Page 32: Introduction à la sécurité dans ASP.NET Core

La sécuritéLa protection des données avec .NET Core

• Exemple d’utilisation du Data Protection

Page 33: Introduction à la sécurité dans ASP.NET Core

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

Page 34: Introduction à la sécurité dans ASP.NET Core

La sécuritéLa protection des données avec .NET Core

• Introduction à la nouvelle librairie d’encryptionBasée sur 2 nouvelle interface : IAuthenticatedEncryptor

et IAuthenticatedEncryptorDescriptorDescription ici :

https://docs.asp.net/en/latest/security/data-protection/extensibility/core-crypto.html

Page 35: Introduction à la sécurité dans ASP.NET Core

Merci! C’était :Introduction à la sécurité dans

ASP.NET CoreAnthony Giretti

Développeur sénior ASP.NET chez [email protected]://anthonygiretti.com

Code source de cette présentation : https://github.com/AnthonyGiretti/aspnetcoresecurity