ASP.NET Core 3.1 - IdentityServer4 - Digital Certificate On Azure (Parte 12)

Depois de falar na segurança segurança, um assunto tão importante nos tempos de hoje, principalmente pela questão da proteção dos dados do usuário, vou dar um passo importante e publicar o IdentityServer4 na opção In-Memory na Microsoft Azure, a cloud da Microsoft. Para que isto seja possível, preciso que você entenda ou que adquira conhecimento e alguns conceitos do Azure.

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.

App Service

Através do Azure, não é obrigatório que você tenha um servidor virtual (linux ou windows) para publicar suas aplicações, você pode usar o App Service que nada mais é do que uma estrutura SaaS (Software As a Service) onde você pode publicar sua aplicação e o Azure vai prover ta a infra estrutura necessária para que ela funcione, desde o framework, até o endereço eletrônico que possa ser acessado de qualquer lugar.

Criação de Arquivos

Uma aplicação publicada como App Service faz com que o Azure bloqueie a criação de arquivos, isso significa que não podemos usar a configuração que cria o arquivo "tempkey.rsa" que comentei na Parte 1, a alternativa seria publicar e enviar o arquivo que já foi gerado, fazer isso não é muito legal por uma questão de segurança, assim como usar o IdentityServer4 In-Memory, mas para publicar um ambiente que pode ser utilizado para testes não há nenhum problema.

Certificado Digital no Azure

Na Parte 2 eu mostrei como criar um certificado digital (.pfx) que pode ser utilizado pelo IdentityServer4, este mesmo certificado pode ser utilizado no Azure, esse processo foi testado anteriormente para que eu pudesse vinculá-lo neste momento, ao invés de mudar tudo agora. Aqui também posso destacar que o uso do certificado será através do Thumbprint.
Este é um processo que eu considero seguro, pois, a empresa pode fornecer um certificado digital emitido por uma certificadora homologada, com uma senha segura e que eventualmete é desconhecida pelo desenvolvedor, não é utilizada pelo desenvolvedor e tão pouco usada em ambiente de testes ou homologação e sim somente em ambiente oficial de produção.

Planos do Azure

Para que um certificado digital (.pfx) possa ser instalado/configurado no Azure, é obrigatório que você realize isso em um App Service que esteja vinculado a um plano relacionado a infra estrutura a partir da opção Basic (B1), não é suportado a opção Shared nem a Free.

Estes 3 (três) pontos são considerados essenciais no Azure para que tudo que eu estou falando aqui funcione corretamente.

Criar App Service

Para criação do App Service, você precisa:
1. Criar uma conta no Microsoft Azure, é gratuito. Sim você precisa um cartão de crédito, mas nos 12 primeiros meses você tem um bônus para usar a plataforma;
2. Criar um App Service Plan, é neste ponto que você vai escolher um plano Basic dentre as opções existentes, o mais barato já atende a necessidade.
3. Criar um Resource Group, é um agrupados de recursos que vai hospedar os serviços em uma determinada região, eu costumo criar sempre na região "East US 2", alguns serviços são um pouco mais baratos nesta região. Fuja das regiões no Brasil, são mais caras a não ser que você vá utilizar para outras coisas, que o seu público alvo seja apenas Brasil, aí você vai ter uma latência de acesso menor. Isso é justificável para aplicações de alta performance onde o modelo de negócios pode variar por conta da velocidade, por exemplo, o tempo que um serviço leva para calcular o frete de uma encomenda.
4. Criar o App Service para o Resource Group e para o App Service Plan.

Configurar o Certificado Digital

Eu criei o App Service chamado "idsrv" e dentro dele temos a opção TLS/SSL settings conforme imagem a seguir.
Upload Digital Certificate On Azure

Nesta tela tem a opção "Upload Certificate" para você selecionar o certificado digital (.pfx), informar a senha de exportação e pronto.
O certificado será exibido e se você clicar sobr ele uma tela será exibida com todas as informações inclusive o Thumbprint que eu usei para configurar a aplicação.

Digital Certificate On Azure Thumbprint

Permissão de Uso do Certificado Digital

O Azure armazena o certificado em uma estrutura muito parecida como se fosse a do Windows (SO), através do Store onde há necessidade do usuário possuir uma permissão para uso do certificado. A aplicação publicada precisa receber essa permissão de uso também e isso é feito através das configurações da aplicação como mostrado na imagem a seguir.

Certificate Permission

É necessário adicionar o Application setting WEBSITE_LOAD_CERTIFICATES com o valor * para ter acesso a todos os certificado que foi feito upload em caso de mais de um. Neste link tem uma referência da Microsoft para isto.

No próximo post, vou mostrar como fiz as configurações para que tudo isso funcione, partindo do princípio que temos o Thumbprint do certificado digital na mão.

Continua em ASP.NET Core 3.1 - IdentityServer4 - App Settings On Azure (Parte 13).