https://s3-us-west-2.amazonaws.com/ecode10-image/e7597ec4-f7ca-440a-a5c2-7fa7e6201c0etoken.jpeg

Parte 2 código

Olá pessoal, baseado no que já vimos no artigo anteriormente Usando token como fator de autenticação hoje eu vou mostrar na prática como preparar a sua aplicação no uso do segundo fator de autenticação. É importante saber que o usuário pode escolher habilitar ou desabilitar no momento que ele quiser.

Esse exemplo é real e eu fiz ele no site www.udocs.me.

Utilizado

  1. Visual Studio
  2. Linguagem C#
  3. Banco de dados SQL Server
  4. Nuget package GoogleAuthenticator

Primeiro ponto

O usuário precisa logar com usuário e senha normalmente na aplicação. Depois que ele logar, é necessário entrar em uma página profile onde ele verificar qualquer informação sobre a própria conta. Nesta página você pode colocar a possibilidade de habilitar ou desabilitar o segundo fator de autenticação. No www.udocs.me foi criado no menu um link para o nome do usuário que aparece que é redirecionado para a página profile.

Segundo ponto

É importante utilizar um package do nuget chamado Google Authenticator para te ajudar no desenvolvimento do segundo fator de autenticação. Foi ele que eu utilizei para desenvolver. Vamos analisar o código 1.1.

Código 1.1 - setup

TwoFactorAuthenticator twoFacAuth = new TwoFactorAuthenticator();

var userUniqueKey = [chave_unica] + [chave_publica];

var setupInfo = twoFacAuth.GenerateSetupCode("seu_site", "user_name", userUniqueKey, 300, 300);

var image = setupInfo.QrCodeSetupImageUrl;

var manualCode = $"Manual code authentication:{setupInfo.ManualEntryKey}";

Note que a primeira linha foi criado apenas uma instância o objeto para ser utilizado depois.

É bom gerar uma chave única para o usuário e isso envolve uma chave privada, apenas a que o usuário possui, não se repete e uma chave pública utilizada para todos dentro do sistema. A junção dessas duas chaves, torna o sistema seguro para gerar o fator de autenticação.

O método utilizado para gerar o setup é o GenerateSetupCode passando vários parâmetros e um deles é a chave criada para o usuário. O primeiro parâmetro é o nome do seu site para ser identificado facilmente no smartphone, o segundo é o nome do usuário, o terceiro o código único do usuário e os outros dois são o tamanho da imagem que deseja receber. Sim, isso porque uma imagem será gerada, um QR Code será gerado para que o usuário possa escanear com o seu smartphone.

Depois que gera o setup, é necessário pegar a imagem pela url. Então utilizamos a propriedade QrCodeSetupImageUrl e colocamos na variável image.

Caso o usuário não queira utilizar a imagem, ele pode fazer o setup usando um código manual gerado através da propriedade ManualEntryKey.

Basta agora você mostrar a imagem e o código na tela do usuário. Como estou utilizando dados reais, colocando a pele em risco, apaguei um pouco a imagem e o código gerado pelo site.

Veja a imagem 1.1 - Qr Code

Image

Agora é necessário o usuário usar o smartphone, fazer download do Google Authenticator pela loja de aplicativos do seu celular. Basta escanear a imagem ou digitar o código manualmente no aplicativo. O aplicativo vai gerar um código que pode ser colocado no campo e depois disso, basta clicar no botão CHECK CODE mostrado na tela.

Terceiro ponto

Depois que o usuário ativa e começa a usar esse segundo fator de autenticação, é necessário ter no banco de dados uma informação falando que aquele usuário tem ativado o Google Authentication e no momento do login, o sistema precisa identificar e solicitar que usuário utilize o smartphone para coloca o código gerado de tempos em tempos.

Sim, toda vez o usuário depois de fazer login na aplicação com usuário e senha, ele precisa pegar o celular e digitar o código que aparece dentro do aplicativo.

Para não ficar muito extenso, vou mostrar a outra página no próximo artigo. Qualquer dúvida, pode entrar em contato comigo pelo Chat de atendimento ou pelo meu site www.mauriciojunior.org.