.NET

26 fev, 2018

App Secrets no desenvolvimento ASP.NET Core 2.0

Publicidade

Introdução

Esse artigo tem como objetivo demonstrar a utilização do Secret Manager tool durante o desenvolvimento de aplicativos ASP.Net Core 2.0 para que você mantenha dados sensíveis fora do seu código fonte. O ponto principal é que você não deveria manter dados sensíveis dentro do seu código fonte, bem como não deveria salvar senhas de produção em desenvolvimento ou teste.

Para resolver esse problema, é possível usar a configuração do sistema para ler valores de variáveis de ambiente ou valores configurados utilizando o Secret Manager tool. O maior benefício do Secret Manager tool é prevenir que dados sensíveis sejam versionados no seu controle de versão, criando um arquivo local na máquina do desenvolvedor para ser lido e interpretado durante o modo de desenvolvimento.

Criando o projeto

Nesse exemplo, criamos um aplicativo ASP.Net Core 2.0 com Razor Pages e o Visual Studio Community 2017.

Para criar o projeto, siga os passos:

E selecione na aba “C#”, a opção .NET Core, seguido de ASP.NET Core Web Application:

Então selecione Web Application com o ASP.NET Core 2.0 para criar uma aplicação exemplo com Razor pages.

Como instalar o Secret Manager tool

Após criar o projeto, na aba “Solution Explorer”, clique com o botão direito do mouse no projeto e selecione “Editar <nome_do_seu_projeto>.csproj”.

Inclua o conteúdo da linha 11, referenciando o Microsoft.Extensions.SecretManager.Tools. Salve e feche o arquivo.

Agora, clique com o botão direito do mouse no seu projeto e selecione a opção “Manage User Secrets”:

 

Em seguida, clique com o botão direito do mouse no seu projeto e selecione a opção “Manage User Secrets”:

Um arquivo “secrets.json” será aberto.

Repare que o local físico do arquivo pertence à sua máquina local e o ID após a pasta “UserSecrets” foi o mesmo gerado previamente no arquivo de configuração do projeto.

Agora, preencha seus dados sensíveis no formato “chave-valor”:

No exemplo, coloquei um dado fictício para simular como se fosse uma chave de API importante que eu não gostaria que fosse compartilhada com ninguém.

Acessando user secrets via configuração

Nesse momento basta ler a configuração do arquivo e utilizar como você bem entender. Para ilustrar, vou exibir o valor da chave na página, porém, seria possível ler também do back-end para fins de envios para outras camadas/serviços do seu sistema.

Abra a página “index.cshtml” no projeto e use a diretiva @inject, referenciando a interface Microsoft.Extensions.Configuration.IConfiguration.

Efetue a leitura da chave utilizando @Configuration[“NOME_DA_CHAVE”] configurada previamente. A mesma será exibida na página conforme leitura do arquivo json criado.

Conclusão

Neste artigo, foi possível demonstrar que uma alternativa para não compartilhar dados sensíveis em projetos seria a utilização do App Secrets. Esse arquivo ficará salvo localmente no perfil do usuário logado na máquina e não será versionado e distribuído posteriormente. Um outro ponto positivo na utilização dessa técnica seria prevenir testes equivocados em ambientes de produção, diminuindo o risco de utilização de credenciais de ambientes críticos.

Fontes