O Sistema de identidade ASP.NET é uma nova coleção de componentes de software para oferecer suporte à autenticação e à autenticação em aplicativos ASP.NET. Ele oferece aprimoramentos significativos em relação ao ASP.NET Membership e ao Simple Membership anteriores e tem como objetivo facilitar o suporte a repositórios de apoio não relacionais, como o Couchbase Server. Além de autenticação e autorização, ele oferece armazenamento de perfis, autorização baseada em função e reivindicações, suporte a logins sociais, como Facebook e Twitter, e suporte a OWIN... ele não depende mais do namespace System.Web.

O Couchbase ASP.NET Identity Provider pretende ser um provedor "completo" com suporte a quase todos, se não todos, os recursos da ASP.NET Identity API. Neste Developer Preview (DP), apenas a parte de autenticação foi testada; nas versões subsequentes, serão adicionadas a função e a autorização baseada em reivindicações, bem como a integração com provedores de mídia social de terceiros por meio de Single Sign-On (SSO), além de recursos como autenticação de dois fatores por SMS e e-mail. Nesta postagem

mostraremos como integrar o DP do provedor de identidade Couchbase ASP.NET a um aplicativo da Web ASP.NET MVC.

Primeiros passos

O pacote está disponível no NuGet ou você mesmo pode criá-lo a partir do repositório no Github, que pode ser encontrado aqui. Para este blog, usaremos os pacotes publicados pelo NuGet.

Usando o Visual Studio 2013 (ou talvez 2015), crie um novo aplicativo da Web MVC da seguinte forma:

Você pode dar o nome que quiser; eu o chamei de CouchbaseIdentity. Clique em "OK" e selecione MVC na próxima caixa de diálogo.

Clique em "OK" novamente e o Visual Studio criará o projeto MVC para você. Por padrão, o Visual Studio usará o provedor de identidade do Entity Framework. Como queremos usar o provedor de identidade do Couchbase, precisamos remover a dependência do pacote do provedor do Entity Framework, adicionar referência ao pacote do Couchbase Identity e, em seguida, substituir todas as referências a using Microsoft.AspNet.Identity.EntityFramework; por Couchbase.AspNet.Identity.

Para alterar a dependência do pacote, abra o NuGet Package Manager, localize o pacote Microsoft ASP.NET Identity EntityFramework e desinstale-o:

Nesse ponto, você terá que reiniciar o Visual Studio. Em seguida, vá para a guia "Online" e altere a lista suspensa para "Include Prerelease" e digite "couchbase" na caixa de texto de pesquisa:

Selecione o Couchbase ASP.NET Identity e clique em "Install" (Instalar) e "Close" (Fechar) para fechar a caixa de diálogo.

Atualização das dependências do pacote

Agora que você trocou os pacotes padrão do provedor de identidade do Entity Framework e os substituiu pelas dependências e pelo pacote do Couchbase ASP.NET Identity, é necessário atualizar o projeto para usar o novo provedor.

Primeiro, examine e substitua todas as referências a usando Microsoft.AspNet.Identity.EntityFramework; com usando Couchbase.AspNet.Identity;. A maneira mais fácil de fazer isso é uma simples busca e substituição (Ctrl F).

Em seguida, em IdentityModels.cs, altere a classe ApplicationDbContext para derivar de ThrowableBucket em vez de IdentityDbContext e, em seguida, substitua o construtor de base para que o Bucket que você escolheu para armazenar as informações de identidade seja passado. Optei por armazenar minhas informações de identidade no bucket "padrão"; você poderia criar um bucket separado, se quisesse:

Observe que o "ThrowableBucket" é um wrapper em torno de alguns métodos CRUD do CouchbaseBucket que altera um pouco o comportamento do SDK; falhas de operação são lançadas. Em versões futuras, isso pode mudar!

Por fim, abra o arquivo Global.asax e adicione o código para inicializar o SDK do Couchbase, que é usado pelo provedor de identidade ASP.NET do Couchbase:

O ClusterHelper é uma classe auxiliar do Couchbase .NET SDK que facilita o gerenciamento de buckets e referências. Recomenda-se que você inicialize o ClusterHelper em Application_Start e feche-o em Application_End. Depois de concluir essa etapa, o aplicativo Web estará pronto para usar o Couchbase como um armazenamento de backup para identidade e perfis!

Testando-o!

Depois de concluir as etapas acima, você pode testar a integração executando o aplicativo (clique com o botão direito do mouse>debug=>Start new instance) e navegando até a página de registro:

Preencha seu e-mail, senha e confirme sua senha, depois clique em "Register" (Registrar).

Supondo que tudo tenha ocorrido bem, você deverá ser redirecionado para a página inicial e verá a mensagem "Hello ....". Agora você está autenticado!

Como o perfil é modelado no Couchbase

O provedor de identidade padrão é baseado em uma série de tabelas relacionais com chaves estrangeiras que vinculam os dados. O provedor Couchbase ASP.NET adota a abordagem NoSQL e armazena os dados como documentos JSON e usa "índices manuais" para índices secundários nos casos em que a chave para buscar os dados não é um índice primário.

O documento principal tem a seguinte estrutura:

É um documento bastante simples; em quase todos os casos, usamos a "incorporação" para armazenar relacionamentos como funções e reivindicações (falaremos sobre isso em uma postagem posterior do blog!). Para fazer uma pesquisa em um campo desse documento, criamos um segundo documento binário que associa o endereço de e-mail do perfil à chave primária (914dc...); isso é semelhante a um conceito de modelagem chamado "referência".

Poderíamos ter usado consultas N1QL, o que tornaria os índices secundários "manuais" obsoletos, mas a intenção é oferecer suporte ao Couchbase Server 3.0 e superior; o N1QL será um recurso do Couchbase Server 4.0, que será lançado ainda este ano.

Como obtê-lo:

O Couchbase ASP.NET Identity Provider está disponível como um pacote no NuGet ou pode ser criado diretamente a partir da fonte usando o repositório do Github. Se você quiser contribuir, as solicitações pull são sempre bem-vindas. Se encontrar um bug, crie um tíquete no Jira e você será notificado sobre o status atual.

Autor

Postado por Jeff Morris, engenheiro de software sênior, Couchbase

Jeff Morris é engenheiro de software sênior da Couchbase. Antes de ingressar na Couchbase, Jeff passou seis anos na Source Interlink como arquiteto da Web corporativa. Jeff é responsável pelo desenvolvimento dos SDKs do Couchbase e pela integração com o N1QL (linguagem de consulta).

Deixar uma resposta