ASP.NET Core 3.1 — IdentityServer4 — Segurança (Parte 2)

Atualização

Ao finalizar a leitura deste post, sugiro você conferir algumas mudanças que ocorreu após a publição original. As mudanças estão no post ASP.NET Core 3.1 — IdentityServer4 — Segurança — Atualização.

OpenSSL

Vamos começar pela instalação do OpenSSL, nos próximos tópicos ficará mais claro como a configuração de segurança do IdentityServer vai funcionar.

  • Abra o PowerShell e execute o OpenSSL de dentro da pasta bin onde ele foi instalado conforme imagem a seguir. Isso é necessário para que não gere erro na execução dos comandos por não encontrar seu arquivo de configuração, existem outras formas de fazer, mas esta é a mais simples.

Instalando o certificado digital

Clique com o botão direito sobre o arquivo certificate.pfx (ou duplo clique) selecione a opção Install PFX.
Você pode instalar o certificado para que somente o seu usuário (logado no windows no momento) tenha acesso ou então instalar para ser válido para todos os usuários LocalMachine, siga os passos até a hora que a senha for solicitada, neste momento, você deve utilizar a senha de exportação para instalar o certificado.

Possibilidades de uso

Primeiramente lembre-se que esse processo somete é necessário para o funcionamento em produção (diferente de Development), seja configurado no IIS, seja no Azure ou até mesmo no Docker.
O IdentityServer permite algumas possibilidades de configuração do certificado digital:

Thumbprint

Também denominado de “impressão digital”, é uma propriedade do certificado digital e esta propriedade é utilizada para que o IdentityServer encontre o certificado digital.

if (_webHostEnvironment.IsDevelopment())
identityServer.AddDeveloperSigningCredential();
else
identityServer.AddSigningCredential(“4DFF9B8EBB5314B9A62EFA72DA8B4D7658231C05”, StoreLocation.CurrentUser, NameType.Thumbprint);

Uso do *.pfx direto

Caso você não queira instalar o certificado digital A1 (*.pfx), você pode usar o arquivo de forma direta. Mas atenção, neste caso você precisará expor a senha de exportação do certificado digital, aquela que você usou quando falamos sobre a instalação.

if (_webHostEnvironment.IsDevelopment())
identityServer.AddDeveloperSigningCredential();
else
identityServer.AddSigningCredential(new X509Certificate2(“certificate.pfx”, “senha”));

Forma de uso maqueado

Este método de uso eu não recomendo pelos motivos que comentei anteriormente, o provisório vai virar definitivo, sempre vira, mas quem se garantir, use para testes rápidos em ambiente Staging por exemplo.

using IdentityServer.Extensions;if (_webHostEnvironment.IsDevelopment())
identityServer.AddDeveloperSigningCredential();
else
identityServer.AddCustomSigningCredential();