O ASP.NET Identity é o novo componente de Membership do ASP.NET que já está na versão 2.1, aprenda neste tutorial as suas funcionalidades, tecnologia base e como implementá-lo e aproveitar todos os recursos.
O ASP.NET Identity foi lançado junto com o ASP.NET MVC 5 e o Visual Studio 2013 e logo foi muito bem aceito pela comunidade técnica, pois possui uma arquitetura bem aberta, limpa e modularizada de forma que proporciona grande facilidade de customização e testabilidade.
Historicamente o ASP.NET forneceu 4 componentes de Membership
- (2002 – 2005) – Não possuía nenhum componente
- (2005 – 2010) – Membership Provider
- (2010 – 2012) – Simple Membership
- (2012 – 2013) – Universal Providers
- (2013 – Hoje) – ASP.NET Identity
Características do ASP.NET Identity desde a primeira versão
- Parte do ONE ASP.NET
- Customização do perfil do usuário simplificado (escrito em Code First)
- Controle de persistência de dados (EF ou outros)
- Totalmente testável (Unity Tests)
- Role Provider (separação de acessos por perfil)
- Claims Based
- Autenticação com redes sociais (FB, Twitter, Google+ e Microsoft Accounts)
- Integraçao com Active Directory (On-Premisses e Azure)
- Integração com OWIN (OWIN Middleware based)
- Entregue via NuGet (Nuget Everywhere)
Alguns aspectos chamaram muito a atenção, como por exemplo ser baseado em Claims (Claims Based), ter sido projetado como um OWIN Middleware e possuir a capacidade de integrar facilmente com as redes sociais através do OAuth 2.0 e OpenID
É possível também integrar com Yahoo e LinkedIn utilizando este pacote adicional desenvolvido pela comunidade técnica. Para customizar a integração com seu próprio mecanismo OAuth, siga este artigo.
Apesar de ter sido muito bem aceito, mesmo assim o ASP.NET Identity recebeu algumas críticas, pois possuía poucos recursos e sua implementação necessitava algumas melhorias, podemos conferir isto no artigo do Brock Allen que escreveu seu próprio componente de Membership baseado nas frustrações que teve com o ASP.NET Membership e o SimpleMembership, além do recém lançado ASP.NET Identity.
Em 2014 o ASP.NET Membership ganhou novas funcionalidades nas suas versões (2.0 e 2.1) Muitas delas listadas como necessárias no artigo acima.
- Two Factor Authentication
- Account Lockout
- Account Confirmation
- Password Reset
- Security Stamp (Sign out everywhere)
- Primary Key extensible for Users and Roles
- Support IQueryable on Users and Roles
- Delete User account
- IdentityFactory Middleware – CreatePerOwinContext (UserManager, DbContext, etc)
- Enhanced Password Validator
- SignInManager (Facilidade para aplicar features [Two Factor, Account Lockout, etc])
Recentemente o ASP.NET Identity tornou-se open-source, pois sua primeira versão não tinha ainda o código aberto, você pode ter acesso ao fonte no GitHub do ASP.NET Identity e acompanhar todas as novas implementações além de enviar pull-requests.
O ASP.NET Identity não funciona apenas com ASP.NET MVC, ele trabalha com todo o ecossistema do ASP.NET (MVC, WebAPI, WebPages, WebForms, SignalR).
Conhecer melhor o ASP.NET Identity poderá lhe fornecer muitas vantagens na hora de iniciar um novo projeto, pois não existirá a necessidade de criar um novo componente de identidade e autenticação, você também pode modernizar seu atual componente o tornando compatível com o ASP.NET Identity. Para migração consulte este artigo.
Um outro detalhe é que o ASP.NET Identity pode ser plugado em diversos providers, caso seu projeto não utilize Entity Framework, existe uma série de providers disponíveis.
- MySQL
- CodeFluent Entities
- Azure Table Storage
- CouchDB
- Elastic Identity
- MongoDB
- Nhibernate
- RavenDB
- Redis
Confira mais detalhes sobre implementação dos providers neste artigo.
Para facilitar e apresentar com mais riqueza de detalhes eu gravei um vídeo de 02h40 horas e estou disponibilizando também slides de apresentação além do código fonte do projeto que eu utilizei nas demos.
Slides
Vídeo
Código Fonte
Baixe o código fonte neste link
Referências
- ASP.NET Identity – Customizando o cadastro de usuários
- ASP.NET Identity – Nome de usuário no formato de e-mail
- ASP.NET MVC – Autenticando usuário através da conta do Facebook
- Getting Started with ASP.NET Identity
- ASP.NET Identity Recommended Resources
- Code! MVC 5 App with Facebook, Twitter, LinkedIn and Google
- Announcing RTM of ASP.NET Identity 2.0.0
- Announcing RTM of ASP.NET Identity 2.1.0
- Features & API
- Extensibility
- Migrations
- Additional Resources
Artigo publicado originalmente em eduardopires.net.br