O documento apresenta uma visão geral do ASP.NET Identity, incluindo sua história, versões, classes principais e recursos como autenticação de dois fatores. Apresenta também recomendações de segurança e demonstrações de funcionalidades como confirmação de conta e login externo usando provedores como Facebook.
4. 1. Um pouco de História
2. Visão Geral do Identity
■ Versão 1.0
■ Tipos de Storages suportados
■ Versão 2.1
■ O que são Claims?
3. Visão Geral das Classes ASP.NET Identity
4. Autenticação com 2 fatores (Two Factor Authentication)
5. Recomendações de segurança
6. DEMOS
Agenda
5. ■ Novembro de 2005
■ Surgia o ASP.NET Membership (odiado por muitos, adorado por poucos :D)
■ Existia somente suporte ao SQL Server ou SQL Server Express (Extremamente limitado seu poder de armazenamento)
■ Maio de 2012
■ Primaiera versão que foi disponibilizada via NuGet
■ Começou um movimento de universalização de Providers, suportando:
■ SQL CE, Armazenamento no Azure
■ Agosto de 2012
■ Chegada do SimpleMembership possibilitando a utilização do Code-First (Isso é LINDO!!!)
■ Pode ser utilizado tanto em WebPages quanto em aplicações ASP.NET MVC
■ Outubro de 2013
■ Chegada da primeira versão do ASP.NET Identity
■ Várias mudanças de paradigmas, conceitos e formas implementação
■ Março de 2014
■ Liberada a versão 2 do ASP.NET Identity
■ Vários recursos implementados: Two Factor, Account Lockout, Confirmation, Reset, etc.
■ Fevereiro de 2015
■ Lançamento da versão 2.2
■ Em breve no AspNet 5
■ Identity 3.0
Um pouco de história
6. ■ A versão 1.0
■ Teve seu lançamento com o Asp.Net MVC 5
■ Customização de informações do usuário usando Code-First
■ Passou a possibilitar testes unitários
■ Utiliza Role Provider
■ Começou a ser inserido o conceito de Claims
■ Integração com Redes sociais
■ Integração com AD: On-Premise, Azure AD, Office365
■ Integração com OWIN
■ ASP.NET Identity está isponível via Nuget desde o Visual Studio 2013
■ ASP.NET Identity só pode ser usado em aplicações com versão do .NET
framework 4.5
■ Suporta: Oauth/OpenID, SSO (Single-Sign-On)
Visão Geral do Identity
7. ■ Tipos de Storages que podem ser utilizados
■ Azure Table Storage
■ DocumentDB
■ MongoDB
■ RavenDB
■ Nhibernate
■ Redis
■ MySQL
Visão Geral do Identity
8. ■ Separação em níveis de responsabilidades na versão 2.1:
■Managers
■ Alto nível de acesso
■ Executa operações para criar usuário
■ Fala com Stores por meio de Interface
■ Altamente plugável
■Storages
■ Fala com a camada de dados
■ Armazena: User, Role, Claims
Visão Geral do Identity
ASP.NET Applications
Managers
Stores
Data Access Layer
Data Source
Ex.: SQL Server, MySQL, Azure Table Storage,
DocumentDB
Ex.: UserStore, RoleStore
Ex.: UserManager,
RoleManager
9. ■ O que são Claims?
■Identity utiliza o recurso de Claims para ser mais extensível
■Utilizando Claims, o usuário pode:
■Vir de qualquer fonte: Facebook, Google+, Twitter, Linkedin
■ASP.NET Identity tendo suporte por meio de algum Provider de Autenticação, sua aplicação
vai poder armazenar informações do usuário externo.
■Seja de fontes externas ou não, utilizando Claims sua aplicação pode
armazenar mais informações do usuário sem fazer Hits no banco de dados.
■Claims trabalha com conceito de dicionário, ou seja, Key/Value:
■“UserName”: “José Roberto Araújo”
■“RoleName”: “Administrador”
■“Birthday”: “26/11/1981”
Visão Geral do Identity
10. ■ Novidades da versão 2.1
■Autenticação em 2 fatores (Two Factor Authentication)
■SMS
■Email
■Bloqueio temporário da conta (Account Lockout)
■Confirmação da Conta (Account Confirmation)
■Security Stamp (log-off de qualquer disponsitivo)
■Chave Primária extensível para a classe User e Role
■Possibilidade de extensão da classe de validação de senha
■Enhanced Password Validator
Visão Geral do Identity
11. ■ IdentityUser – Implementa a interface IUser
■ EmailService/SmsService – São notificadores para o modo de autenticação
de 2 fatores.
■ UserManager – API para criar User, Claims e informações de autenticação
utilizando a classe UserStore
■ RoleManager – API para criar as roles utilizando a classe RoleStore
■ UserStore – camada que fala com o banco de dados, armazenando User,
User Roles, User Claims
■ RoleStore – camada que fala com o banco de dados, armazenando
as Roles.
■ SigninManager – API utilizada para realizar o trabalho de
autenticação (Single ou Two Factor)
Classes ASP.NET Identity
12. ■ Mecanismo utilizado para aumentar a segurança de acesso as
aplicações
■ Precisa de pelo menos 1 provider para viabilizar o funcionamento do
mecanismo
■ Assim que o usuário logar na aplicação, será solicitado a autenticação
usando o segundo fator
■ A cada novo login é verificado o segundo fator.
Autenticação com 2 fatores (Two Factor Authentication)
13. ■ SEMPRE, SEMPRE utilize SSL em suas aplicações. NUNCA viva sem
esse recurso.
■ Garanta que sua política de senha seja forte o suficiente.
■ Não permita que o seu login possa sofrer várias tentativas de acesso e
não realizar nenhum bloqueio
■ Utilize o token Xsrf garantindo a segurança do envio dos dados em
seu request
■ No ASP.NET MVC use o atributo: ValidateAntiForgeryToken
Recomendações de Segurança
14. ■ Aplicação ASP.NET MVC usando Individual Identity
■Confirmação da conta via Email
■Account Confirmation
■Customizando dados do usuário Identity
■Bloqueio da conta
■Account Lockout
■Two Factor Authentication
■SMS
■Email
■Login Externo usando External Provider
■Facebook
■Claims vs Roles
■Utilizando custom provider com DocumentDB
■Plus...
DEMO