Usando token como fator de autenticação - código
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
- Visual Studio
- Linguagem C#
- Banco de dados SQL Server
- 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
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.
Sign up to our newsletter
Receive our latest updates about programming languages, software, database, books, ebooks, classes, jobs and more.