No artigo anterior falamos sobre A2F com o Swivel como ferramente 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.

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.

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.

codigo_scriptcase_a2f

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.

Você pode gostar de…

Scriptcase e os Web services

Nesta oportunidade estarei explicando como trabalhar com web services dentro do scriptcase, diretame...

Scriptcase usa MVC?

Talvez você em algum momento já possa ter pensado sobre essa questão,”será que o Scriptcase us...

Desabilitando o preenchimento automático e autocomplete do navegador Chrome em telas de login

Olá. Aqui pretendo mostrar uma alternativa para desabilitar o preenchimento automático e o autocom...

Comente este post

Receba novos posts, ofertas e muito mais toda semana.

Usaremos as informações fornecidas para lhe enviar newsletter e ofertas especiais por email. Você pode cancelar a inscrição quando quiser, clicando em um link no rodapé de qualquer e-mail que receber de nós, ou entrando em contato conosco pelo e-mail sales@scriptcase.net. Saiba mais sobre nossa Polícia de Privacidade.