Usando token como fator de autenticação - código

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.