SlideShare a Scribd company logo
1 of 17
#GlobalAzure
ASP.NET Identity – De dentro das
Trincheiras
José Roberto Araújo
Patrocinadores
www.jrobertoaraujo.net
www.facebook.com/joserobertoaraujo
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
■ 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 
■ 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
■ Tipos de Storages que podem ser utilizados
■ Azure Table Storage
■ DocumentDB
■ MongoDB
■ RavenDB
■ Nhibernate
■ Redis
■ MySQL
Visão Geral do Identity
■ 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
■ 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
■ 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
■ 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
■ 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)
■ 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
■ 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
■ http://www.asp.net/identity
■https://github.com/aspnet/identity
■https://aspnetidentity.codeplex.com/
■http://azure.microsoft.com/en-us/services/documentdb/
■http://channel9.msdn.com/Series/Customizing-ASPNET-Authentication-with-
Identity
■https://github.com/tracker086/DocumentDB.AspNet.Identity
■http://www.nuget.org/packages/DocumentDB.AspNet.Identity/1.0.6-beta
Referências
www.jrobertoaraujo.net
www.facebook.com/joserobertoaraujo
Asp net identity - De dentro das trincheiras

More Related Content

What's hot

Plataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKPlataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKRyan Padilha
 
Desenvolvimento para web com Meteor
Desenvolvimento para web com MeteorDesenvolvimento para web com Meteor
Desenvolvimento para web com MeteorWeverton Gomes
 
Construindo aplicações leves e performáticas com ASP.NET Core 1.0
Construindo aplicações leves e performáticas com ASP.NET Core 1.0Construindo aplicações leves e performáticas com ASP.NET Core 1.0
Construindo aplicações leves e performáticas com ASP.NET Core 1.0Fabrício Lopes Sanchez
 
ASP.NET 5 - Novidades do Desenvolvimento Web em .NET
ASP.NET 5 - Novidades do Desenvolvimento Web em .NETASP.NET 5 - Novidades do Desenvolvimento Web em .NET
ASP.NET 5 - Novidades do Desenvolvimento Web em .NETRenato Groff
 
LightSwitch - O futuro do desenvolvimento rápido de aplicações
LightSwitch - O futuro do desenvolvimento rápido de aplicaçõesLightSwitch - O futuro do desenvolvimento rápido de aplicações
LightSwitch - O futuro do desenvolvimento rápido de aplicaçõesIgor Abade
 
Netshoes - API Gateway
Netshoes - API GatewayNetshoes - API Gateway
Netshoes - API GatewayMarcos Barbero
 
Novidades do ASP.NET MVC 4
Novidades do ASP.NET MVC 4Novidades do ASP.NET MVC 4
Novidades do ASP.NET MVC 4Waldyr Felix
 
Arquitetura de Micro Serviços
Arquitetura de Micro ServiçosArquitetura de Micro Serviços
Arquitetura de Micro ServiçosFernando Ike
 
Workshop Microservices - Microservices com Spring Cloud e Netflix OSS
Workshop Microservices - Microservices com Spring Cloud e Netflix OSSWorkshop Microservices - Microservices com Spring Cloud e Netflix OSS
Workshop Microservices - Microservices com Spring Cloud e Netflix OSSRodrigo Cândido da Silva
 
TDC Floripa 2017 - Criando Microservices Reativos com Java
TDC Floripa 2017 - Criando Microservices Reativos com JavaTDC Floripa 2017 - Criando Microservices Reativos com Java
TDC Floripa 2017 - Criando Microservices Reativos com JavaRodrigo Cândido da Silva
 
QCon SP 2016 - Construindo Microservices Auto-curáveis com Spring Cloud e Net...
QCon SP 2016 - Construindo Microservices Auto-curáveis com Spring Cloud e Net...QCon SP 2016 - Construindo Microservices Auto-curáveis com Spring Cloud e Net...
QCon SP 2016 - Construindo Microservices Auto-curáveis com Spring Cloud e Net...Rodrigo Cândido da Silva
 
Micro Front-end + CQRS/ES - JSSP jul/2019
Micro Front-end + CQRS/ES - JSSP jul/2019Micro Front-end + CQRS/ES - JSSP jul/2019
Micro Front-end + CQRS/ES - JSSP jul/2019Gabriel Rodrigues Couto
 
WSO2 - Portfólio de Produtos, Soluções e Suportes
WSO2 - Portfólio de Produtos, Soluções e SuportesWSO2 - Portfólio de Produtos, Soluções e Suportes
WSO2 - Portfólio de Produtos, Soluções e SuportesEdgar Silva
 

What's hot (20)

Plataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKPlataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDK
 
Desenvolvimento para web com Meteor
Desenvolvimento para web com MeteorDesenvolvimento para web com Meteor
Desenvolvimento para web com Meteor
 
Meteor - TechParty 2015
Meteor - TechParty 2015Meteor - TechParty 2015
Meteor - TechParty 2015
 
Construindo aplicações leves e performáticas com ASP.NET Core 1.0
Construindo aplicações leves e performáticas com ASP.NET Core 1.0Construindo aplicações leves e performáticas com ASP.NET Core 1.0
Construindo aplicações leves e performáticas com ASP.NET Core 1.0
 
ASP.NET 5 - Novidades do Desenvolvimento Web em .NET
ASP.NET 5 - Novidades do Desenvolvimento Web em .NETASP.NET 5 - Novidades do Desenvolvimento Web em .NET
ASP.NET 5 - Novidades do Desenvolvimento Web em .NET
 
GUJavaSC - Mini-curso Java EE
GUJavaSC - Mini-curso Java EEGUJavaSC - Mini-curso Java EE
GUJavaSC - Mini-curso Java EE
 
LightSwitch - O futuro do desenvolvimento rápido de aplicações
LightSwitch - O futuro do desenvolvimento rápido de aplicaçõesLightSwitch - O futuro do desenvolvimento rápido de aplicações
LightSwitch - O futuro do desenvolvimento rápido de aplicações
 
Netshoes - API Gateway
Netshoes - API GatewayNetshoes - API Gateway
Netshoes - API Gateway
 
ASP.NET 5, MVC 6 e além
ASP.NET 5, MVC 6 e alémASP.NET 5, MVC 6 e além
ASP.NET 5, MVC 6 e além
 
Novidades do ASP.NET MVC 4
Novidades do ASP.NET MVC 4Novidades do ASP.NET MVC 4
Novidades do ASP.NET MVC 4
 
Arquitetura de Micro Serviços
Arquitetura de Micro ServiçosArquitetura de Micro Serviços
Arquitetura de Micro Serviços
 
Começando com meteor
Começando com meteorComeçando com meteor
Começando com meteor
 
Curso jsf
Curso jsfCurso jsf
Curso jsf
 
Workshop Microservices - Microservices com Spring Cloud e Netflix OSS
Workshop Microservices - Microservices com Spring Cloud e Netflix OSSWorkshop Microservices - Microservices com Spring Cloud e Netflix OSS
Workshop Microservices - Microservices com Spring Cloud e Netflix OSS
 
TDC Floripa 2017 - Criando Microservices Reativos com Java
TDC Floripa 2017 - Criando Microservices Reativos com JavaTDC Floripa 2017 - Criando Microservices Reativos com Java
TDC Floripa 2017 - Criando Microservices Reativos com Java
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
QCon SP 2016 - Construindo Microservices Auto-curáveis com Spring Cloud e Net...
QCon SP 2016 - Construindo Microservices Auto-curáveis com Spring Cloud e Net...QCon SP 2016 - Construindo Microservices Auto-curáveis com Spring Cloud e Net...
QCon SP 2016 - Construindo Microservices Auto-curáveis com Spring Cloud e Net...
 
Entity Framework 7
Entity Framework 7Entity Framework 7
Entity Framework 7
 
Micro Front-end + CQRS/ES - JSSP jul/2019
Micro Front-end + CQRS/ES - JSSP jul/2019Micro Front-end + CQRS/ES - JSSP jul/2019
Micro Front-end + CQRS/ES - JSSP jul/2019
 
WSO2 - Portfólio de Produtos, Soluções e Suportes
WSO2 - Portfólio de Produtos, Soluções e SuportesWSO2 - Portfólio de Produtos, Soluções e Suportes
WSO2 - Portfólio de Produtos, Soluções e Suportes
 

Viewers also liked

Matando web forms e modernizando um grande varejista
Matando web forms e modernizando um grande varejistaMatando web forms e modernizando um grande varejista
Matando web forms e modernizando um grande varejistaJosé Roberto Araújo
 
Arquitetura agnóstica aplicada asp net6 + nodejs e redis
Arquitetura agnóstica aplicada   asp net6 + nodejs e redisArquitetura agnóstica aplicada   asp net6 + nodejs e redis
Arquitetura agnóstica aplicada asp net6 + nodejs e redisJosé Roberto Araújo
 
AspNet 5 & Redis - Escalando sua performance
AspNet 5 & Redis - Escalando sua performanceAspNet 5 & Redis - Escalando sua performance
AspNet 5 & Redis - Escalando sua performanceJosé Roberto Araújo
 
Web moderna além do Frontend com AngularJS
Web moderna além do Frontend com AngularJSWeb moderna além do Frontend com AngularJS
Web moderna além do Frontend com AngularJSJosé Roberto Araújo
 
DDD na prática :: Implementação tática – Entidades vs Objeto de Valor
DDD na prática :: Implementação tática – Entidades vs Objeto de ValorDDD na prática :: Implementação tática – Entidades vs Objeto de Valor
DDD na prática :: Implementação tática – Entidades vs Objeto de ValorJosé Roberto Araújo
 
Serverles com Azure Functions & DocumentDB
Serverles com Azure Functions & DocumentDBServerles com Azure Functions & DocumentDB
Serverles com Azure Functions & DocumentDBJosé Roberto Araújo
 
ASP.NET Identity - O Novo componente de Membership do ASP.NET
ASP.NET Identity - O Novo componente de Membership do ASP.NETASP.NET Identity - O Novo componente de Membership do ASP.NET
ASP.NET Identity - O Novo componente de Membership do ASP.NETEduardo Pires
 

Viewers also liked (7)

Matando web forms e modernizando um grande varejista
Matando web forms e modernizando um grande varejistaMatando web forms e modernizando um grande varejista
Matando web forms e modernizando um grande varejista
 
Arquitetura agnóstica aplicada asp net6 + nodejs e redis
Arquitetura agnóstica aplicada   asp net6 + nodejs e redisArquitetura agnóstica aplicada   asp net6 + nodejs e redis
Arquitetura agnóstica aplicada asp net6 + nodejs e redis
 
AspNet 5 & Redis - Escalando sua performance
AspNet 5 & Redis - Escalando sua performanceAspNet 5 & Redis - Escalando sua performance
AspNet 5 & Redis - Escalando sua performance
 
Web moderna além do Frontend com AngularJS
Web moderna além do Frontend com AngularJSWeb moderna além do Frontend com AngularJS
Web moderna além do Frontend com AngularJS
 
DDD na prática :: Implementação tática – Entidades vs Objeto de Valor
DDD na prática :: Implementação tática – Entidades vs Objeto de ValorDDD na prática :: Implementação tática – Entidades vs Objeto de Valor
DDD na prática :: Implementação tática – Entidades vs Objeto de Valor
 
Serverles com Azure Functions & DocumentDB
Serverles com Azure Functions & DocumentDBServerles com Azure Functions & DocumentDB
Serverles com Azure Functions & DocumentDB
 
ASP.NET Identity - O Novo componente de Membership do ASP.NET
ASP.NET Identity - O Novo componente de Membership do ASP.NETASP.NET Identity - O Novo componente de Membership do ASP.NET
ASP.NET Identity - O Novo componente de Membership do ASP.NET
 

Similar to Asp net identity - De dentro das trincheiras

Minicurso WebAPI .NET CORE - SemanaTI2018 - UNIVEM
Minicurso WebAPI .NET CORE - SemanaTI2018 - UNIVEMMinicurso WebAPI .NET CORE - SemanaTI2018 - UNIVEM
Minicurso WebAPI .NET CORE - SemanaTI2018 - UNIVEMAlisson Solitto
 
Analise frameworks php
Analise frameworks phpAnalise frameworks php
Analise frameworks phpIgor Moura
 
Spring Security e Spring Boot Aula - 2018
Spring Security e Spring Boot Aula - 2018Spring Security e Spring Boot Aula - 2018
Spring Security e Spring Boot Aula - 2018André Luiz Forchesatto
 
OpenAM - Fast SSO
OpenAM - Fast SSOOpenAM - Fast SSO
OpenAM - Fast SSOYros
 
JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2
JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2
JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2Rodrigo Cândido da Silva
 
TDC 2015 - Segurança em Recursos RESTful com OAuth2
TDC 2015 - Segurança em Recursos RESTful com OAuth2TDC 2015 - Segurança em Recursos RESTful com OAuth2
TDC 2015 - Segurança em Recursos RESTful com OAuth2Rodrigo Cândido da Silva
 
Zend Framework 2 - Desenvolvimento Ágil Competente
Zend Framework 2 - Desenvolvimento Ágil CompetenteZend Framework 2 - Desenvolvimento Ágil Competente
Zend Framework 2 - Desenvolvimento Ágil CompetenteMichael Cardoso
 
T@rget trust asp.net avançado
T@rget trust   asp.net avançadoT@rget trust   asp.net avançado
T@rget trust asp.net avançadoTargettrust
 
Análise de segurança e hacking de containers Docker - Fernando Silva - Tcheli...
Análise de segurança e hacking de containers Docker - Fernando Silva - Tcheli...Análise de segurança e hacking de containers Docker - Fernando Silva - Tcheli...
Análise de segurança e hacking de containers Docker - Fernando Silva - Tcheli...Tchelinux
 
ENSOL 2011 - OWASP e a Segurança na Web
ENSOL 2011 - OWASP e a Segurança na WebENSOL 2011 - OWASP e a Segurança na Web
ENSOL 2011 - OWASP e a Segurança na WebMagno Logan
 
Como manter o WordPress seguro
Como manter o WordPress seguroComo manter o WordPress seguro
Como manter o WordPress seguroRudá Almeida
 
Html5 pt - Offline Apps
Html5 pt - Offline AppsHtml5 pt - Offline Apps
Html5 pt - Offline AppsByclosure
 
[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...
[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...
[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...GUTS-RS
 
Apresentação sobre Drupal
Apresentação sobre DrupalApresentação sobre Drupal
Apresentação sobre DrupalWebdrop
 
Construindo APIs RESTful com Spring
Construindo APIs RESTful com SpringConstruindo APIs RESTful com Spring
Construindo APIs RESTful com SpringMateus Malaquias
 

Similar to Asp net identity - De dentro das trincheiras (20)

Minicurso WebAPI .NET CORE - SemanaTI2018 - UNIVEM
Minicurso WebAPI .NET CORE - SemanaTI2018 - UNIVEMMinicurso WebAPI .NET CORE - SemanaTI2018 - UNIVEM
Minicurso WebAPI .NET CORE - SemanaTI2018 - UNIVEM
 
Metasploit Framework: Software Livre para PoC de Vulnerabilidades
Metasploit Framework: Software Livre para PoC de VulnerabilidadesMetasploit Framework: Software Livre para PoC de Vulnerabilidades
Metasploit Framework: Software Livre para PoC de Vulnerabilidades
 
Analise frameworks php
Analise frameworks phpAnalise frameworks php
Analise frameworks php
 
Apresentação Drupal como LMS
Apresentação Drupal como LMSApresentação Drupal como LMS
Apresentação Drupal como LMS
 
Spring Security e Spring Boot Aula - 2018
Spring Security e Spring Boot Aula - 2018Spring Security e Spring Boot Aula - 2018
Spring Security e Spring Boot Aula - 2018
 
OpenAM - Fast SSO
OpenAM - Fast SSOOpenAM - Fast SSO
OpenAM - Fast SSO
 
JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2
JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2
JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2
 
TDC 2015 - Segurança em Recursos RESTful com OAuth2
TDC 2015 - Segurança em Recursos RESTful com OAuth2TDC 2015 - Segurança em Recursos RESTful com OAuth2
TDC 2015 - Segurança em Recursos RESTful com OAuth2
 
Zend Framework 2 - Desenvolvimento Ágil Competente
Zend Framework 2 - Desenvolvimento Ágil CompetenteZend Framework 2 - Desenvolvimento Ágil Competente
Zend Framework 2 - Desenvolvimento Ágil Competente
 
T@rget trust asp.net avançado
T@rget trust   asp.net avançadoT@rget trust   asp.net avançado
T@rget trust asp.net avançado
 
Análise de segurança e hacking de containers Docker - Fernando Silva - Tcheli...
Análise de segurança e hacking de containers Docker - Fernando Silva - Tcheli...Análise de segurança e hacking de containers Docker - Fernando Silva - Tcheli...
Análise de segurança e hacking de containers Docker - Fernando Silva - Tcheli...
 
ENSOL 2011 - OWASP e a Segurança na Web
ENSOL 2011 - OWASP e a Segurança na WebENSOL 2011 - OWASP e a Segurança na Web
ENSOL 2011 - OWASP e a Segurança na Web
 
Como manter o WordPress seguro
Como manter o WordPress seguroComo manter o WordPress seguro
Como manter o WordPress seguro
 
Melhores Práticas no Uso da Nuvem AWS
Melhores Práticas no Uso da Nuvem AWSMelhores Práticas no Uso da Nuvem AWS
Melhores Práticas no Uso da Nuvem AWS
 
Html5 pt - Offline Apps
Html5 pt - Offline AppsHtml5 pt - Offline Apps
Html5 pt - Offline Apps
 
[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...
[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...
[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...
 
JAVAle - Open-IdentityStack
JAVAle - Open-IdentityStackJAVAle - Open-IdentityStack
JAVAle - Open-IdentityStack
 
Apresentação sobre Drupal
Apresentação sobre DrupalApresentação sobre Drupal
Apresentação sobre Drupal
 
Aula 05 - Java Script Básico
Aula 05 -  Java Script BásicoAula 05 -  Java Script Básico
Aula 05 - Java Script Básico
 
Construindo APIs RESTful com Spring
Construindo APIs RESTful com SpringConstruindo APIs RESTful com Spring
Construindo APIs RESTful com Spring
 

Asp net identity - De dentro das trincheiras

  • 1. #GlobalAzure ASP.NET Identity – De dentro das Trincheiras José Roberto Araújo
  • 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