PHP Classes

How to Implement PHP Fingerprint Authentication Using the Package Digital: Authenticate users' fingerprints using WebAuthn

Recommend this page to a friend!
  Info   Example   Screenshots   View files Files   Install with Composer Install with Composer   Download Download   Reputation   Support forum   Blog    
Last Updated Ratings Unique User Downloads Download Rankings
2024-12-05 (12 hours ago) RSS 2.0 feedNot enough user ratingsTotal: 1 This week: 1All time: 11,506 This week: 43Up
Version License PHP version Categories
digital 1.0MIT/X Consortium ...5PHP 5, User Management, Security, Har...
Description 

Author

This package can authenticate users' fingerprints using WebAuthn.

It provides classes that can register a biometric credential using cryptographic keys exchanged by the fingerprint device.

The package uses the WebAuthn standard to exchange messages with the fingerprint device over the Web.

The package provides example scripts that show how to authenticate users using their digital fingerprint without entering any password.

Picture of Rodrigo Faustino
  Performance   Level  
Name: Rodrigo Faustino <contact>
Classes: 33 packages by
Country: Brazil Brazil
Innovation award
Innovation award
Nominee: 21x

Winner: 2x

Example

<?php
ini_set
('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

require_once
'../backend/controller/UsuarioController.php';
require_once
'../backend/model/Usuario.php';
require_once
'../backend/config/Database.php';
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: *");
header("Content-Type: application/json; charset=UTF-8");

$uri = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);

$uri = explode( '/', $uri );
/*
array(4) {
  [0]=>
  string(0) ""
  [1]=>
  string(3) "api"
  [2]=>
  string(9) "index.php"
  [3]=>
  string(8) "usuarios"
}
*/

if ($uri[3] !== 'usuarios') {
   
header("HTTP/1.1 404 Not Found");
    exit();
}

$userId = null;
if (isset(
$uri[2])) {
   
$userId = $uri[2];
}

$requestMethod = $_SERVER["REQUEST_METHOD"];
$db = new Database();
$usuario = new Usuario();
$controller = new UsuarioController($db,$usuario);


switch (
$requestMethod) {
    case
'GET':
        if (isset(
$_GET['username'])) {
           
$username = $_GET['username'];
           
$response = $controller->verificarLogin($username);
        } elseif (
$userId) {
           
$response = $controller->get($userId);
        } else {
           
$response = $controller->getAll();
        };
        break;
   
    case
'POST':
       
$json = file_get_contents('php://input');
       
$data = json_decode($json, true);
       
$response = $controller->cadastrar($data);
        break;
    case
'PUT':
       
$json = file_get_contents('php://input');
       
$data = json_decode($json, true);
       
$response = $controller->update($userId, $data);
        break;
    case
'DELETE':
       
$response = $controller->delete($userId);
        break;
    default:
       
header("HTTP/1.1 405 Method Not Allowed");
        exit();
        break;
}
echo
json_encode($response);

?>


Details

WebAuthn Login por Digital

https://youtu.be/KpuxzaQEKZc

Visão Geral

Este repositório contém uma aplicação baseada no WebAuthn, um padrão moderno para autenticação na web sem o uso de senhas. O WebAuthn é parte das especificações da FIDO Alliance e oferece uma solução mais segura para autenticação de usuários por meio de chaves criptográficas geradas no dispositivo do usuário.

Nesta aplicação, foi implementado o login por digital, utilizando a biblioteca WebAuthn em PHP. Este recurso permite que os usuários se autentiquem por meio de dispositivos compatíveis, como leitores de digitais ou chaves de segurança USB/NFC, em vez de usar credenciais tradicionais, como nome de usuário e senha.

Recursos Principais

  • Registro de Credenciais: Os usuários podem registrar uma credencial biométrica (como impressão digital) ou dispositivos de autenticação suportados.
  • Autenticação Segura: A autenticação ocorre sem que o servidor precise armazenar dados sensíveis, como senhas. Em vez disso, utiliza chaves criptográficas.
  • Compatibilidade com Múltiplos Dispositivos: Suporte a dispositivos como USB, NFC, BLE e leitores internos (smartphones ou notebooks).
  • Segurança Avançada: Proteção contra ataques como phishing e reutilização de credenciais, com suporte a criptografia de ponta a ponta.

Tecnologias Utilizadas

  • PHP: Linguagem de back-end para manipular solicitações WebAuthn e interagir com a base de dados.
  • Biblioteca WebAuthn: Biblioteca utilizada para gerenciar as credenciais e interagir com o protocolo WebAuthn.
  • JavaScript: Para a interação com o navegador e APIs do WebAuthn.
  • Banco de Dados: Armazenamento das credenciais criptográficas no backend.

Como Funciona o WebAuthn?

1. Registro de Usuário

  1. Solicitação de Registro: O cliente (navegador) faz uma solicitação ao servidor para registrar uma nova credencial.
  2. Criação de Credenciais: O navegador usa o dispositivo de autenticação do usuário (como um leitor de digitais) para criar uma chave pública única.
  3. Armazenamento Seguro: A chave pública gerada é enviada ao servidor e armazenada junto com informações do usuário.

2. Autenticação de Usuário

  1. Desafio Criptográfico: O servidor envia um desafio ao cliente.
  2. Assinatura Digital: O dispositivo do usuário usa a chave privada correspondente para assinar o desafio.
  3. Verificação no Servidor: O servidor verifica a assinatura usando a chave pública previamente armazenada. Se for válida, o login é concluído.

Segurança

  • Os dados biométricos (como impressões digitais) nunca deixam o dispositivo do usuário.
  • O servidor só armazena a chave pública, que é inútil sem a chave privada armazenada no dispositivo do usuário.
  • As chaves criptográficas são únicas por site, impedindo ataques de reutilização.

Arquitetura da Aplicação

  • Frontend (JavaScript):

    - Usa a API `navigator.credentials` para interagir com o dispositivo do usuário. - Envia e recebe desafios criptográficos do servidor.

  • Backend (PHP):

    - Gera desafios e argumentos para registro e autenticação. - Processa as respostas do cliente e verifica a autenticidade das credenciais.

Fluxo de Comunicação

           REGISTRO DE USUÁRIO

Cliente (Navegador) | Servidor (PHP) --------------------------------|-------------------------------- Solicita argumentos | Gera argumentos para registro

     para registro          |    e os envia ao cliente

--------------------------------------------|-------------------------------- Cria credenciais | Processa e armazena as credenciais e as envia ao servidor | criptográficas do usuário --------------------------------|-------------------------------- Login concluído | Retorna sucesso ou falha

Termos de Privacidade

Dados Coletados

  • Chaves públicas associadas ao usuário (armazenadas no banco de dados).
  • Informações de hardware do dispositivo de autenticação.

Uso de Dados

  • As informações coletadas são utilizadas exclusivamente para autenticação.
  • Nenhuma informação biométrica (como impressões digitais) é enviada ou armazenada no servidor.

Segurança

  • Os dados armazenados são protegidos por criptografia e seguem as melhores práticas de segurança.
  • Em caso de comprometimento do servidor, as informações armazenadas não podem ser usadas para comprometer as credenciais do usuário.

Requisitos para Uso

  • Navegador Compatível: Google Chrome, Firefox ou qualquer navegador que suporte WebAuthn.
  • Servidor PHP: Versão 7.4 ou superior.
  • Banco de Dados: MySQL ou SQLite.

Configuração

  1. Clone o repositório e inicie o PHP:
    git clone https://github.com/faustinopsy/digital/.git
    cd digital
    php -S localhost:8000
    

para testar: https://digital.ceuvago.com


Screenshots (1)  
  • assets/css/img/flash.jpg
  Files folder image Files (42)  
File Role Description
Files folder imageapi (3 files)
Files folder imageassets (3 directories)
Files folder imagebackend (3 directories)
Files folder imagerootCertificates (7 files)
Files folder imagesrc (2 files, 3 directories)
Accessible without login Plain text file error_log Data Auxiliary data
Accessible without login HTML file index.html Doc. Documentation
Accessible without login Plain text file minhaarea.php Example Example script
Accessible without login HTML file politica-de-privacidade.html Doc. Documentation
Accessible without login Plain text file README.md Doc. Documentation
Accessible without login Plain text file server.php Example Example script

  Files folder image Files (42)  /  api  
File Role Description
  Accessible without login Plain text file index.php Example Example script
  Accessible without login Plain text file login.php Example Example script
  Accessible without login Plain text file validar_assinatura.php Example Example script

  Files folder image Files (42)  /  assets  
File Role Description
Files folder imagecss (2 files, 1 directory)
Files folder imageimg (1 file)
Files folder imagejs (4 files)

  Files folder image Files (42)  /  assets  /  css  
File Role Description
Files folder imageimg (1 file)
  Accessible without login Plain text file login.css Data Auxiliary data
  Accessible without login Plain text file minhaarea.css Data Auxiliary data

  Files folder image Files (42)  /  assets  /  css  /  img  
File Role Description
  Accessible without login Plain text file btn.svg Data Auxiliary data

  Files folder image Files (42)  /  assets  /  img  
File Role Description
  Accessible without login Image file usb.png Icon Icon image

  Files folder image Files (42)  /  assets  /  js  
File Role Description
  Accessible without login Plain text file auth.js Data Auxiliary data
  Accessible without login Plain text file cadastrar.js Data Auxiliary data
  Accessible without login Plain text file funcoes.js Data Auxiliary data
  Accessible without login Plain text file login.js Data Auxiliary data

  Files folder image Files (42)  /  backend  
File Role Description
Files folder imageconfig (1 file)
Files folder imagecontroller (1 file)
Files folder imagemodel (1 file)

  Files folder image Files (42)  /  backend  /  config  
File Role Description
  Plain text file Database.php Class Class source

  Files folder image Files (42)  /  backend  /  controller  
File Role Description
  Plain text file UsuarioController.php Class Class source

  Files folder image Files (42)  /  backend  /  model  
File Role Description
  Plain text file Usuario.php Class Class source

  Files folder image Files (42)  /  rootCertificates  
File Role Description
  Accessible without login Plain text file apple.pem Data Auxiliary data
  Accessible without login Plain text file globalSign.pem Data Auxiliary data
  Accessible without login Plain text file googleHardware.pem Data Auxiliary data
  Accessible without login Plain text file hypersecu.pem Data Auxiliary data
  Accessible without login Plain text file microsoftTpmCollection.pem Data Auxiliary data
  Accessible without login Plain text file solo.pem Data Auxiliary data
  Accessible without login Plain text file yubico.pem Data Auxiliary data

  Files folder image Files (42)  /  src  
File Role Description
Files folder imageAttestation (2 files, 1 directory)
Files folder imageBinary (1 file)
Files folder imageCBOR (1 file)
  Plain text file WebAuthn.php Class Class source
  Plain text file WebAuthnException.php Class Class source

  Files folder image Files (42)  /  src  /  Attestation  
File Role Description
Files folder imageFormat (8 files)
  Plain text file AttestationObject.php Class Class source
  Plain text file AuthenticatorData.php Class Class source

  Files folder image Files (42)  /  src  /  Attestation  /  Format  
File Role Description
  Plain text file AndroidKey.php Class Class source
  Plain text file AndroidSafetyNet.php Class Class source
  Plain text file Apple.php Class Class source
  Plain text file FormatBase.php Class Class source
  Plain text file None.php Class Class source
  Plain text file Packed.php Class Class source
  Plain text file Tpm.php Class Class source
  Plain text file U2f.php Class Class source

  Files folder image Files (42)  /  src  /  Binary  
File Role Description
  Plain text file ByteBuffer.php Class Class source

  Files folder image Files (42)  /  src  /  CBOR  
File Role Description
  Plain text file CborDecoder.php Class Class source

The PHP Classes site has supported package installation using the Composer tool since 2013, as you may verify by reading this instructions page.
Install with Composer Install with Composer
 Version Control Unique User Downloads Download Rankings  
 100%
Total:1
This week:1
All time:11,506
This week:43Up