IdentityServer4

IdentityServer4

Framework que implementa os protocolos OpenID e OAuth 2.0, gratuito, open source e disponível para ASP.NET Core.

1. Cenário Geral

De forma ampla, aplicações modernas interagem da seguinte forma:

  • Browers comunicam com Web Applications;
  • Web Applications comunicam com Web APIs;
  • Aplicações nativas comunicam com Web APIs;

Tipicamente, cada camada deve implementar autenticação e/ou autorização. Portanto, isolar essas funções de segurança para um serviço externo evita a duplicidade de código entre todos os envolvidos.

2. Autenticação, OpenID e OAuth 2.0

A autenticação é necessária para que uma aplicação possa conhecer a identidade do usuário. Os protocolos de autenticação mais comuns são SAML2p, WS-Federation and OpenID Connect, sendo que o SAML2p é o mais popular e mais implementado globalmente.

O mais recente entre os três é o OpenID e é considerado o futuro, pois ele foi desenvolvido do zero, com maior potencial para aplicações modernas e projetado para ser amigável com APIs.

OpenID e o OAuth 2.0 são bem similares, na verdade o OpenID é uma extensão do OAuth 2.0. Portanto, as preocupações fundamentais de segurança estão unidas em um único protocolo: OpenID.

3. IdentityServer4

IdentityServer é um framework que implementa os protocolos OpenID e OAuth 2.0, é gratuito e open source e está disponível para ASP.NETCore.

Algumas das características do IdentityServer4 são: proteger os Recursos, gerenciar e autenticar Clientes, autenticar Usuários, validar Tokens.

Alguns conceitos devem ser destacados:

  • Recursos são implementações que você deseja proteger com o IdentityServer; exemplo: uma API.
  • Clientes são os sistemas utilizados pelos Usuários, ou, parte de um sistema; exemplo: aplicação nativa, SPAs ou Web Application. Os Clientes devem obrigatoriamente ser registrados no IdentityServer.
  • Usuários são as pessoas, ou seja, é o usuário final que utiliza um Cliente para acessar um Recurso.
  • Identity Token representa a saída do processo de autenticação. Contém informações sobre como e quando o usuário autenticou.
  • Access Token contém informações sobre o Cliente e o Usuário e são encaminhados para as API de Recursos.

4. Demo GitHub

4.1. Projeto

A Solução deste repositório contém quatro Projetos:

  • ApiOne representa uma API que exige autenticação;
  • ClientJavaScript como o nome sugere, representa um Cliente JavaScript;
  • ClienteMVC como o nome sugere, representa um Cliente ASP.NET MVC Core;
  • E por fim, IdentityServer, projeto que implementa o IdentityServer4.

4.2. Branches

Três branches estão disponíveis:

  • InMemory contém um banco de dados em memória;
  • Postgres contém configurações para o banco de dados Postgres, com inicialização dos dados em Program.cs;
  • Certificate contém configurações e documentação para a criação de um Certificado.

5. Conclusão

Apresentamos neste repository três clients: uma API, um projeto em JavaScript e um ASP.NET MVC que conversam com um servidor IdentityServer para lidar com autenticação e autorização.

Entre para ver ou adicionar um comentário

Outros artigos de Hudson Cadan Scheffer

  • Hangfire - Background jobs and workers for .NET

    Hangfire - Background jobs and workers for .NET

    Uma maneira fácil para executar processamento em background com .NET.

  • Testes em Apps Flutter

    Testes em Apps Flutter

    Quanto mais funcionalidades o aplicativo tem, mais difícil é realizar testes manualmente. Portanto, testes…

  • Performance C#

    Performance C#

    No nosso dia-a-dia utilizamos estruturas de repetição a todo momento para realizarmos operações de soma, encontramos o…

  • Flutter e Animações com Stateless Widgets

    Flutter e Animações com Stateless Widgets

    Sim, é isso mesmo. Sem pegadinha, sem marketing enganoso.

  • Flutter e o Package GET

    Flutter e o Package GET

    O package Get é uma ferramenta poderosa para Flutter que combina: Alta performance para o Gerenciamento de Estado;…

  • Docker

    Docker

    Quick Reminder para comandos Docker mais utilizados. Images docker image ls Lista todas as imagens.

Outras pessoas também visualizaram

Conferir tópicos