ASPNET CORE 2 - Autenticação de usuário no MongoDB

Uma boa alternativa para quem não pretende utilizar o SQLServer para montar os seus projetos é utilizar um banco NoSQL, neste caso vamos utilizar o MongoDB para sair um pouco do tradicional.

MongoDB

MongoDB nada mais é do que um banco de dados orientado a documentos classificado como NoSQL, não relacional.

Hospedagem

Você pode utilizar o mLab. Ele possui uma versão free e dá poder de escolha de qual nuvem utilizar, Microsoft Azure, Amazon Web Services, etc.

Configuração

  • Crie um ASP.NET Core Web Application utilizando ASPNET CORE 2;
  • Um detalhe importante, na configuração do projeto, opte pela configuração Change Authentication para Individual User Accounts como exibido na imagem a seguir.

Statup.cs

Configure então o arquivo conforme o exemplo a seguir:

public void ConfigureServices(IServiceCollection services)  
{
        services.AddIdentityWithMongoStores(Configuration.GetConnectionString("DefaultConnectionMongoDB"))
        .AddDefaultTokenProviders();

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

        services.AddMvc();
}

ASPNET CORE 1 X ASPNET CORE 2

Essa conexão com o MongoDB existe uma biblioteca no NuGet que funciona muito bem para o ASPNET CORE 1 (Microsoft.AspNetCore.Identity.MongoDB), mas para o 2 não funciona.
Então eu fiz a migração do projeto (nada complexo) e deixei funcionando para o ASPNET CORE 2. Você pode fazer baixar o projeto do git aqui.
Como o projeto começa com o nome Microsoft não tenho permissão para publicar no NuGet, mas é uma boa saída para quem está migrande e quer utilizar a biblioteca.

Projeto

Para apoiar, criei um projeto de exemplo e já disponibilizei no github
Este projeto possui a referência para a biblioteca que funciona para o ASPNET CORE 2, mas ela não está junto no commit, então, baixe as duas e referencie conforme a sua necessidade.

Conclusão

Para quem quer controlar os usuários, claims entre outras informações sem utilizar o Entity Framework ou até mesmo o SQLServer, pode então utilizar o MongoDB sem medo.