Autenticação utilizando ASP.NET Core 2.0 Identity

13 mar

Fala Galera,

Quando vamos criar uma aplicação um dos módulos mais importante dentro de um sistema é o processo de autenticação. Este módulo é aonde devemos nos preocupar com a sua segurança porque é aonde o usuário irá digitar dados sensíveis como seu usuário e a sua senha.

O ASP.Net Core 2.0 provê um mecanismo poderoso para autenticar e autorizar um usuário dentro de uma aplicação é o ASP.Net Core 2.0 Identity.

O que é ASP.Net Core 2.0 Identity ?

O ASP.Net Core 2.0 Identity é um mecanismo que permite adicionar funcionalidades de autenticação e autorização dentro de uma aplicação. Com ele podemos adicionar mecanismo de gerenciamento de conta como criação, edição e exclusão de usuários além de fornecer mecanismo de autenticação externa como Facebook, Google e outros utilizando o OpenId ou OAuth.

Criando uma aplicação com autenticação e autorização usando o ASP.Net Core 2.0 Identity

Vamos abrir o Visual Studio 2017 e criar um novo projeto, selecione ASP.Net Core Web Application conforme a figura abaixo:

No próxima janela, escolha a opção “Individual User Accounts” neste momento estamos dizendo que nossa aplicação vai utilizar o ASP.NET Core 2.0 Identity.

A estrutura do projeto você verá algumas configurações já criadas pelo próprio template como:

  • Controller de Gerenciamento de Conta
    • ManageController
    • AccountController
  • Data
    • ApplicationDBContext
  • Models
    • Account (Login, Register)
    • Manage (ChangePassword, EnableAuthentication)
  • Service
    • Email Send
    • SMS Send
  • Views
    • Account
    • Manage

Agora vamos abrir o appsettings.json e configurar nosso banco de dados conforme código abaixo:

{
  "ConnectionStrings": {
    "DefaultConnection": "Server={server};Initial Catalog=aspnetIdentity;Persist Security Info=False;User ID={your_username};Password={your_password};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"
  },
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Debug",
      "System": "Information",
      "Microsoft": "Information"
    }
  }
}

Agora com o nosso banco de dados configurado, vamos abrir o Startup.cs e dentro do método ConfigureServices, vamos adicionar a configuração de autenticação, conforme código abaixo:

public void ConfigureServices(IServiceCollection services)
{
            services.AddDbContext<ApplicationDbContext>(options =>
                options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

            services.AddIdentity<ApplicationUser, IdentityRole>()
                .AddEntityFrameworkStores<ApplicationDbContext>()
                .AddDefaultTokenProviders();

            services.Configure<IdentityOptions>(options =>
            {
                options.Password.RequireDigit = true;
                options.Password.RequiredLength = 6;
                options.Password.RequireNonAlphanumeric = false;
                options.Password.RequireUppercase = true;
                options.Password.RequireLowercase = false;
                options.Password.RequiredUniqueChars = 6;

                options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(30);
                options.Lockout.MaxFailedAccessAttempts = 10;
                options.Lockout.AllowedForNewUsers = true;

                options.User.RequireUniqueEmail = true;
            });

            services.ConfigureApplicationCookie(options =>
            {
                // Cookie settings
                options.Cookie.HttpOnly = true;
                options.Cookie.Expiration = TimeSpan.FromDays(150);
                options.LoginPath = "/Account/Login"; 
                options.LogoutPath = "/Account/Logout"; 
                options.AccessDeniedPath = "/Account/AccessDenied"; 
                options.SlidingExpiration = true;
            });


            // Add application services.
            services.AddTransient<IEmailSender, EmailSender>();

            services.AddMvc();
}

Com o Identity configurado, vamos no método Configure, adicione a chamada UseAuthentication conforme código abaixo:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
            if (env.IsDevelopment())
            {
                app.UseBrowserLink();
                app.UseDeveloperExceptionPage();
                app.UseDatabaseErrorPage();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
            }

            app.UseStaticFiles();

            app.UseAuthentication();

            app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");
            });
}

Toda nossa configuração está pronta porém falta um detalhe para que possamos utilizar o ASP.Net Core 2.0 Identity, devemos criar as tabelas no nosso banco de dados, para isso execute o comando abaixo no Package Manager Console:

  • update-database

Feito isso, estamos com a nossa aplicação pronta para usar o ASP.Net Core 2.0 Identity. Vamos executar a aplicação e clicar em Register

Ao clicar em Register, você deverá ser redirecionado para a tela de Home, ao abrir o nosso banco de dados podemos ver as tabelas criadas, conforme imagem abaixo:

Agora, basta explorar mais as funcionalidades como a parte de gerenciamento de usuário e podemos até mesmo habilitar a autenticação em dois fatores.

O código deste post pode ser baixado através deste link

Abs e até a próxima

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *