Partilhar via


Escolha uma solução de gerenciamento de identidade

A maioria dos aplicativos Web oferece suporte à autenticação para garantir que os usuários sejam quem afirmam ser. Um usuário pode ser uma pessoa ou outro aplicativo. O gerenciamento de acesso garante que os usuários só possam ver e modificar as informações que estão autorizados a ver e modificar. Por exemplo, um usuário final não deve ter acesso à seção administrativa de um site. As soluções de gestão Identity são criadas para lidar com os requisitos de autenticação e tarefas de autorização. Para saber mais sobre gerenciamento de identidades, consulte O que é gerenciamento de identidade e acesso?. Muitas soluções de gerenciamento de identidades para aplicativos Web .NET estão disponíveis, cada uma com diferentes recursos e requisitos para usar ou instalar. Este artigo fornece orientação sobre como escolher a solução certa.

Gerenciamento básico de identidades com o ASP.NET Core Identity

ASP.NET Core inclui o provedor de autenticação ASP.NET Core Identity integrado. O provedor inclui as APIs, a interface do usuário e a configuração do banco de dados de back-end para dar suporte ao gerenciamento de identidades de usuários, ao armazenamento de credenciais de usuários e à concessão ou revogação de permissões. Os recursos adicionais incluem:

Para a maioria dos cenários, esse pode ser o único provedor necessário. Em outros cenários, um servidor ou serviço que gerencia a autenticação e a identidade pode ser benéfico.

Para obter mais informações, consulte Introdução ao Identity em ASP.NET Core.

Determinar se um servidor OIDC é necessário

Os aplicativos Web exigem uma maneira de lembrar ações passadas porque a Web, por padrão, é sem monitoração de estado. Caso contrário, os usuários seriam forçados a inserir suas credenciais toda vez que navegassem para uma nova página. A solução comum para lembrar o estado é cookies, um mecanismo baseado em navegador para armazenar dados. O servidor web envia o cookieinicial e, em seguida, o navegador armazena-o e envia-o de volta com cada pedido. Isso é feito automaticamente, sem a necessidade de o desenvolvedor escrever qualquer código. Os cookies são fáceis de usar e incorporados no navegador, mas são projetados para uso dentro de um único site ou domínio da web. A solução padrão incorporada ao ASP.NET Core usa autenticação baseada em cookie.

Os tokens são contêineres com metadados que são explicitamente passados pelos cabeçalhos ou pelo corpo das solicitações HTTP. A principal vantagem dos tokens em relação aos cookies é que eles não estão vinculados a um aplicativo ou domínio específico. Em vez disso, os tokens geralmente são assinados com criptografia assimétrica. Por exemplo, os servidores OIDC emitem tokens com informações sobre identidade usando o JSON Web Token (JWT) formato que inclui assinatura. A criptografia assimétrica usa uma combinação de uma chave privada conhecida apenas pelo signatário e uma chave pública que todos podem conhecer. Os tokens também podem ser criptografados.

O token assinado não pode ser adulterado devido à chave privada. A chave pública:

  • Torna possível validar o token para garantir que ele não foi alterado.
  • Garante que foi gerado pela entidade detentora da chave privada.

A principal desvantagem de usar tokens é que eles exigem um serviço (normalmente um servidor OIDC) para emitir e fornecer validação para tokens. O serviço deve ser instalado, configurado e mantido.

Uma razão comum pela qual um servidor OIDC é necessário é para aplicativos que expõem APIs baseadas na Web que são consumidas por outros aplicativos. Para APIs baseadas na Web expostas, as interfaces do usuário do cliente, como SPA (Single Page Applications), clientes móveis e clientes de desktop, são consideradas parte do mesmo aplicativo. Exemplos de SPA incluem Angular, React, e Blazor WebAssembly. Se aplicativos diferentes do seu aplicativo Web ou de qualquer interface do usuário do cliente precisarem fazer uma chamada de API segura para seu aplicativo, você provavelmente desejará usar tokens. Se você tiver apenas interfaces do usuário de cliente, ASP.NET Core Identity fornecerá a opção de adquirir um token durante a autenticação. O token de autenticação emitido pelo ASP.NET Core Identity:

  • Pode ser usado por clientes móveis e desktop. Os cookies são preferidos em relação aos tokens para segurança e simplicidade.
  • Não é adequado para gerenciar o acesso de aplicativos de terceiros.

Outra razão pela qual um servidor OIDC é necessário é para partilhar inícios de sessão com outras aplicações. Geralmente conhecido como autenticação única, esta funcionalidade permite aos utilizadores:

  • Inicie sessão uma vez com o formulário de uma aplicação Web.
  • Use as credenciais resultantes para autenticar com outros aplicativos sem precisar entrar novamente ou escolher uma senha diferente.

Um servidor OIDC normalmente é preferido para fornecer uma solução segura e escalável para logon único.

Para aplicativos que não compartilham logins com outros aplicativos, a maneira mais simples de proteger rapidamente um aplicativo é usar o provedor de Identity ASP.NET Core integrado. Caso contrário, um servidor OIDC fornecido por uma solução de gerenciamento de identidade de terceiros é necessário. Os servidores OIDC estão disponíveis como:

  • Produtos que você instala em seu servidor, chamados de auto-host .
  • Os contêineres são executados em um host como o Docker.
  • Serviços baseados na Web com os quais você se integra para gerenciar a identidade.

Algumas soluções são gratuitas e de código aberto, enquanto outras são licenciadas comercialmente. Consulte soluções de gerenciamento de identidades para obter uma lista de opções disponíveis. É possível que sua organização já use um provedor de identidade. Nesse caso, pode fazer sentido usar o provedor existente em vez de optar por uma solução diferente. Todas as principais soluções fornecem documentação para configurar ASP.NET Core para usar seu produto ou serviço.

Cenários desconectados

Muitas soluções, como Microsoft Entra ID, são baseadas na nuvem e requerem uma ligação à Internet para funcionarem. Se o seu ambiente não permitir conectividade com a Internet, você não poderá usar o serviço.

ASP.NET Core Identity funciona perfeitamente bem em cenários desconectados, como:

  • O aplicativo não pode acessar a Internet.
  • O aplicativo ainda deve funcionar na rede local, mesmo se a Internet estiver desconectada.

Se você precisar de um servidor OIDC completo para um cenário desconectado, escolha uma das seguintes opções:

  • Uma solução que lhe permite instalar e executar o serviço nas suas próprias máquinas.
  • Execute o serviço de autenticação localmente como um contêiner.

Decidir onde os dados do usuário, como logins, são armazenados

Outro fator importante a considerar é onde os dados de entrada do usuário são armazenados. Muitos desenvolvedores escolhem serviços externos baseados em nuvem, como o Microsoft Entra ID, para gerenciar a identidade. Um provedor de serviços baseado em nuvem:

  • Assume as responsabilidades de armazenar dados de forma segura.
  • Mantém o software atualizado com os patches e versões de segurança mais recentes.
  • Está em conformidade com os regulamentos de privacidade.

Outros preferem armazenar dados em seus próprios servidores devido a regulamentos, conformidade, política ou outros motivos.

Se os dados estiverem armazenados em seus servidores, você provavelmente precisará escolher uma solução instalável ou baseada em contêiner.

Identity vs servidor OIDC

Use o diagrama a seguir para ajudá-lo a decidir se deseja usar o sistema ASP.NET Core Identity ou um servidor OIDC para autenticação e autorização:

Identity fluxo de decisão de gestão

A tabela a seguir lista algumas das coisas a considerar ao escolher sua solução de gerenciamento de identidade.

Funcionalidade Autoalojamento (infraestrutura ou contentor) Nuvem
Integração de aplicativos As soluções locais que são implementadas como bibliotecas ou estruturas geralmente podem ser integradas diretamente em seu próprio aplicativo. As soluções baseadas em contêiner exigem que ocorra uma transferência entre seu aplicativo Web e o serviço baseado em contêiner. As soluções baseadas na nuvem normalmente se integram em pontos específicos do seu fluxo de entrada e fornecem configuração para atualizar a interface do usuário para corresponder ao seu tema, mas o nível de personalização disponível é limitado.
Configuração As soluções de host próprio exigem a configuração do software para o ambiente, além de configurar como você deseja gerenciar identidades. As soluções baseadas em contêiner geralmente fornecem uma interface do usuário baseada na Web para configuração. As soluções baseadas na nuvem normalmente fornecem uma interface do usuário baseada na Web para configuração.
Personalização As soluções de auto-host geralmente são altamente personalizáveis, incluindo alterações baseadas em código. Embora as soluções conteinerizadas forneçam opções de extensibilidade, elas geralmente são mais limitadas. Os serviços baseados na nuvem permitem personalização, mas normalmente limitam-se a alterações baseadas na configuração.
Manutenção Os produtos instalados exigem um recurso dedicado para garantir que todos os patches de segurança sejam aplicados em tempo hábil e para gerenciar atualizações. O processo de atualização e patch para contêineres geralmente é de menor atrito e envolve simplesmente a instalação da imagem de contêiner fornecida. O provedor de serviços mantém sua solução baseada em nuvem, incluindo a aplicação dos patches necessários e o tratamento de atualizações.
Armazenamento de credenciais do usuário Você é responsável pela governança de dados e pelo tratamento de violações. Gerir os riscos associados ao tratamento das credenciais dos utilizadores e ao cumprimento dos regulamentos. é delegada ao prestador de serviços.

Para obter mais informações sobre as opções disponíveis, consulte Identity soluções de gerenciamento para ASP.NET Core.

Próximos passos