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.

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.

You might also like…

Cloud Computing e suas tendências para 2020

O que é Cloud Computing? Apresenta a possibilidade de oferecer serviços através da Inter...

Aplicação com Abas utilizando o ScriptCase

Umas das funcionalidades mais interessantes desenvolvidas para auxiliar em grandes formulários sã...

SCRIPTCASE: O que é VS O que não é

Você conhece realmente o que é o Scriptcase? Nesse post pretendemos esclarecer todas as dúvidas ...

You might also like…

Get new posts, resources, offers and more each week.

We will use the information you provide to update you about our Newsletter and Special Offers. You can unsubscribe any time you want by clinck in a link in the footer of any email you receive from us, or by contacting us at sales@scriptcase.net. Learn more about our Privacy Police.