No artigo anterior falamos sobre A2F com o Swivel como ferramenta externa para integrar nossas aplicações em Scriptcase, destaco que, é provável que dessa função se possa ter uma aplicação menos robusta como por exemplo em um desenvolvimento próprio. Agora vamos mostrar uma aplicação em NodeJS de um sistema de dupla autenticação.

Nesse exemplo, se desenvolve uma aplicação em NodeJS de um sistema de dupla autenticação onde só se pode fazer dupla autenticação por meio de um OTC (On Time Code) (Soft Token), mas também com um dispositivo (Hard Token), e nesse caso em particular os da família FIDO e FEITIAN (https://www.ftsafe.com/products/FIDO). E no caso de OTC, este poderia ser gerado por exemplo com o Google Aunthenticator.

NodeJS: Este documento se concentra em como o Scriptcase faz uso desses serviços. Esta implementação, embora tenha sido própria, foi tomado um cuidado especial nas interfaces, por isso elas foram claramente documentadas para cada uma dessas opções, PHP, .Net e Angular.

Na documentação do PHP nos era dado as seguintes informações: 

php_sdk

v1.2.0

A2F : auth2factor PHP Integration SDK

Requisitos

  • sudo apt-get install php5-curl
  • sudo apt-get install composer

Utiliza Firebase JWT para assinado HMAC.  Se não usas Composer, copiar as livrarias do Firebase JWT para tua solucão.

API

Configurar hostname, API key e secret

$HOST = “https://localhost”;

$API_KEY = “…”;

$API_SECRET = “…”;

$a2f_client = new auth2factor($HOST, $API_KEY, $API_SECRET);

Autenticação

delegate

Retorna un token temporal. Utilizado para solicitar verificação OTC/U2F.

$tokens = $a2f_client->delegate(“user@me.com”);

$req_token = $tokens[“x-app-sign-request”];

$u2f_req = $tokens[“x-u2f-sign-request”];

validate_otc

Valida o OTC. Retorna um token de portador, caso contrário falso.

$sid = $a2f_client->validate_otc(“…temporary token”, “001122”);

validate_u2f

Valida U2F. Retorna um token de portador, caso contrário falso. Deve ser chamado uma vez se o cliente assina com sucesso com u2f.sign.

$client_data = “eyJ0eXAiO…”;

$signature_data = “AQAAADUw…”;

$sid = $a2f_client->validate_u2f(“…temporary token”, $client_data, $signature_data);

Registro de chaves

request_challenge

Solicita uma U2F challenge para iniciar a chave de registro.

$challenge = $a2f_client->request_challenge(“validando o token portador”);

register_key

Registra uma chave U2F. Deve ser chamado uma vez u2f.register retorna com sucesso.

$client_data = “eyJ0eXAiO…”;

$registration_data = “AQAAADUw…”;

$a2f_client->register_key(“validando o token portador”, $client_data, $registration_data);

Implementação U2F

FIDO U2F – Inscrição

Uma vez autenticado, o usuário acessa a Configuração da Conta da solução e lhe é ofereceido a inscrição da chave.

cookbook/register.php

  • Obtem um U2F challenge: API request_challenge
  • Chama a livraria cliente u2f.register com o challenger e solicita assinar
  • Nós prosseguimos para entrar na chave
  • A confirmação bem-sucedida é armazenada em register_key.php: API register_key

FIDO U2F – Autenticação

Se o usuario tiver chaves registradas no domínio ( onde se autenticou no primeiro passo).

cookbook/sign.php

  • Obtem um conjunto de sign requests
  • Chama a livraria cliente u2f.sign com os sign requests e solicita firmar
  • Se procede a ingresar a chave
  • Se valida o sign_key.php e obten um token portador: API validate_u2f

Livraria Javascript para U2F

Incluir livraria minificada

<head>

<script src=”js/a2f.js”></script>

</head>

Contêm:

  • Axios para AJAX / REST axios.min.js
  • Axios config axios-config.js
  • U2F u2f-api.js
  • U2F utils u2f-utils.js

Com base no anterior, se analizou e se definio que a nivel de Macro Algoritmo o programa deveria:

  1. Definir parametros de conexão,
  2. Com o usuario loguado na 1a autenticação ( email ), se conecta ao servidor para solicitar um Token.
  3. Com a recepção do Token, se solicita o OTC ao usuário.
  4. Se envia o OTC.
  5. Se recebe a resposta e é autorizado ou não a segunda autenticação.
  6. Se é bem-sucedida, redireciona a aplicação ao Menu.

Espero que os 3 artigos deste tema tão interessante como a Dupla Autenticação lhe tenham sido úteis,  e qualquer que seja o método a ser utilizado, não esqueça de sempre revisar a documentação, fazer testes e, finalmente, implementá-lo no Scriptcase.

Veja esse e muitos outros conteúdos do nosso blog aqui: SCRIPTCASE BLOG

Por ,

14 de janeiro de 2020

Compartilhar esta postagem

a

Você pode gostar também…

Desenvolvimento de Software Impulsionado pela IA: O Papel do ChatGPT

No mundo em rápida evolução da tecnologia, a inteligência artificial (IA) está desempenhando u...

Low-Code: A Chave para a Transformação Digital Acessível

A transformação digital é um imperativo para empresas que desejam permanecer competitivas na era...

Tendências de TI para 2024: Rumo a Novos Horizontes Tecnológicos

O mundo da Tecnologia da Informação (TI) e do Desenvolvimento Web está em constante evolução, ...

Você pode gostar também…

Receba novas postagens, recursos, ofertas e muito mais a semanalmente.

Nós utilizaremos seu email para te adicionar a nossa Newsletter semanal. Você pode sair desta lista a qualquer momento clicando no link no final dos emails recebidos, ou entrar em contato conosco em vendas@scriptcase.com.br. Conheça nossa Política de Privacidade.