Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Dica
Esse conteúdo é um trecho do eBook, Architecting Cloud Native .NET Applications for Azure, disponível no .NET Docs ou como um PDF para download gratuito que pode ser lido offline.
O Duende IdentityServer é uma estrutura para criar um servidor de autenticação compatível com padrões OpenID Connect (OIDC) e OAuth 2.x usando ASP.NET Core.
Isso foi projetado para fornecer uma maneira comum de autenticar solicitações para todos os seus aplicativos, sejam eles web, nativos, móveis ou endpoints de API. O IdentityServer pode ser usado para implementar o SSO (Single Sign-On) para vários aplicativos e tipos de aplicativo. Ele pode ser usado para autenticar usuários reais por meio de formulários de entrada e interfaces de usuário semelhantes, bem como autenticação baseada em serviço que normalmente envolve emissão, verificação e renovação de token sem qualquer interface do usuário. Ele também pode atuar como um gateway de federação para unificar provedores de autenticação.
IdentityServer foi projetado para ser uma solução personalizável. Cada instância normalmente é personalizada para atender a uma organização individual ou às necessidades de um conjunto de aplicativos.
Cenários comuns de aplicativo Web
Normalmente, os aplicativos precisam dar suporte a alguns ou todos os seguintes cenários:
- Usuários humanos acessando aplicativos Web com um navegador.
- Usuários humanos que acessam APIs Web de back-end usando aplicativos baseados em navegador.
- Usuários humanos em clientes móveis/nativos que acessam APIs Web de back-end.
- Outros aplicativos que acessam APIs Web de back-end (sem um usuário ativo ou interface de usuário).
- Qualquer aplicativo pode precisar interagir com outras APIs Web, usando sua própria identidade ou delegando à identidade do usuário.
Figura 8-1. Tipos e cenários de aplicativo.
Em cada um desses cenários, a funcionalidade exposta precisa ser protegida contra uso não autorizado. No mínimo, isso normalmente requer autenticar o usuário ou a entidade fazendo uma solicitação para um recurso. Essa autenticação pode usar um dos vários protocolos comuns, como SAML2p, WS-Fed ou OpenID Connect. A comunicação com APIs normalmente usa o protocolo OAuth 2 e seu suporte para tokens de segurança. Separar essas questões críticas e transversais de segurança e seus detalhes de implementação dos próprios aplicativos garante a consistência e melhora a segurança e a mantibilidade. Terceirizar essas preocupações para um produto dedicado, como o IdentityServer, elimina a necessidade de que cada aplicativo resolva esses problemas por conta própria.
O IdentityServer fornece middleware que é executado em um aplicativo ASP.NET Core e adiciona suporte para OpenID Connect e OAuth 2.x (consulte as especificações com suporte). Usando o IdentityServer, as organizações podem criar seu próprio aplicativo ASP.NET Core usando o middleware IdentityServer para atuar como o servidor de autorização para todos os protocolos de segurança baseados em token. O middleware do IdentityServer expõe pontos de extremidade para dar suporte à funcionalidade padrão, incluindo:
- Autorizar (autenticar o usuário final)
- Token (solicitar um token programaticamente)
- Descoberta (metadados sobre o servidor)
- Informações do usuário (obtenha informações do usuário com um token de acesso válido)
- Autorização de dispositivo (usada para iniciar a autorização de fluxo do dispositivo)
- Introspecção (validação de token)
- Revogação (revogação de token)
- Encerramento de sessão (disparar a saída única em todos os aplicativos)
- Solicitações de autorização enviadas por push (para um processo de autenticação mais seguro)
Introdução
O IdentityServer está disponível:
- Com uma licença de comunidade, que permite usar o IdentityServer gratuitamente para pequenas empresas e sem fins lucrativos (as condições se aplicam)
- A versão paga, que permite usar o IdentityServer em um cenário comercial
Para obter mais informações sobre preços, consulte a página de preços do produto oficial.
Você pode adicioná-lo aos seus aplicativos usando seus pacotes NuGet. O pacote principal é IdentityServer, que foi baixado mais de quatro milhões de vezes. O pacote base não inclui nenhum código de interface do usuário e dá suporte apenas à configuração na memória. Para usá-lo com um banco de dados, você também desejará um provedor de dados como Duende.IdentityServer.Storage, que usa o Entity Framework Core para armazenar dados operacionais e de configuração para IdentityServer. Para a interface do usuário, você pode copiar arquivos do repositório de exemplos para seu aplicativo ASP.NET Core MVC para adicionar suporte para entrar e sair usando o middleware IdentityServer.
Configuração
O IdentityServer dá suporte a diferentes tipos de protocolos e provedores de autenticação social que podem ser configurados como parte de cada instalação personalizada. Normalmente, isso é feito na classe do Program aplicativo ASP.NET Core. A configuração envolve especificar os protocolos com suporte e os caminhos para os servidores e pontos de extremidade que serão usados. A Figura 8-2 mostra uma configuração de exemplo obtida do Início Rápido do IdentityServer para aplicativos do projeto ASP.NET Core.
// some details omitted
builder.Services.AddIdentityServer();
builder.Services.AddAuthentication(options =>
{
options.DefaultScheme = "Cookies";
options.DefaultChallengeScheme = "oidc";
})
.AddCookie("Cookies")
.AddGoogle("Google", options =>
{
options.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;
options.ClientId = "<insert here>";
options.ClientSecret = "<insert here>";
})
.AddOpenIdConnect("oidc", options =>
{
options.Authority = "https://localhost:5001";
options.ClientId = "web";
options.ClientSecret = "secret";
options.ResponseType = "code";
options.Scope.Clear();
options.Scope.Add("openid");
options.Scope.Add("profile");
options.MapInboundClaims = false; // Don't rename claim types
options.SaveTokens = true;
});
}
Figura 8-2. Configurando o IdentityServer.
Clientes JavaScript
Muitos aplicativos nativos de nuvem utilizam APIs de servidor e aplicativos de página única (SPAs) no front-end, como aqueles desenvolvidos usando frameworks como React, Angular ou Blazor WebAssembly. O padrão BFF (back-end para front-end) é usado para esses tipos de clientes, o que possibilita manter os tokens fora do alcance do navegador. Esse padrão segue a especificação OAuth 2.0 do IETF para aplicativos Browser-Based.
Referências
- Documentação do IdentityServer
- tipos de aplicativo
- Back-end para Front-end
Anterior Próximo