{"id":23627351,"url":"https://github.com/faustinopsy/digital","last_synced_at":"2026-02-19T14:32:00.659Z","repository":{"id":266371636,"uuid":"796781323","full_name":"faustinopsy/digital","owner":"faustinopsy","description":"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","archived":false,"fork":false,"pushed_at":"2025-02-06T16:49:33.000Z","size":896,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-09T21:40:30.476Z","etag":null,"topics":["authentication","digital","login-system","php8","webauthn","webauthn-demo"],"latest_commit_sha":null,"homepage":"https://digital.ceuvago.com/","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/faustinopsy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-05-06T16:05:57.000Z","updated_at":"2025-02-08T17:20:01.000Z","dependencies_parsed_at":"2024-12-04T00:21:49.620Z","dependency_job_id":"22c50cb1-e73d-42cc-8b1c-1a62e1c12894","html_url":"https://github.com/faustinopsy/digital","commit_stats":null,"previous_names":["faustinopsy/digital"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/faustinopsy/digital","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faustinopsy%2Fdigital","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faustinopsy%2Fdigital/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faustinopsy%2Fdigital/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faustinopsy%2Fdigital/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/faustinopsy","download_url":"https://codeload.github.com/faustinopsy/digital/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faustinopsy%2Fdigital/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29618283,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-19T13:04:20.082Z","status":"ssl_error","status_checked_at":"2026-02-19T13:03:33.775Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["authentication","digital","login-system","php8","webauthn","webauthn-demo"],"created_at":"2024-12-27T23:58:53.278Z","updated_at":"2026-02-19T14:32:00.643Z","avatar_url":"https://github.com/faustinopsy.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# WebAuthn Login por Digital\n\nhttps://youtu.be/KpuxzaQEKZc\n\n## Visão Geral\n\nEste 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.\n\nNesta 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.\n\n## Recursos Principais\n\n-   **Registro de Credenciais**: Os usuários podem registrar uma credencial biométrica (como impressão digital) ou dispositivos de autenticação suportados.\n-   **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.\n-   **Compatibilidade com Múltiplos Dispositivos**: Suporte a dispositivos como USB, NFC, BLE e leitores internos (smartphones ou notebooks).\n-   **Segurança Avançada**: Proteção contra ataques como phishing e reutilização de credenciais, com suporte a criptografia de ponta a ponta.\n\n## Tecnologias Utilizadas\n\n-   **PHP**: Linguagem de back-end para manipular solicitações WebAuthn e interagir com a base de dados.\n-   **Biblioteca WebAuthn**: Biblioteca utilizada para gerenciar as credenciais e interagir com o protocolo WebAuthn.\n-   **JavaScript**: Para a interação com o navegador e APIs do WebAuthn.\n-   **Banco de Dados**: Armazenamento das credenciais criptográficas no backend.\n\n## Como Funciona o WebAuthn?\n\n### 1. Registro de Usuário\n\n1.  **Solicitação de Registro**: O cliente (navegador) faz uma solicitação ao servidor para registrar uma nova credencial.\n2.  **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.\n3.  **Armazenamento Seguro**: A chave pública gerada é enviada ao servidor e armazenada junto com informações do usuário.\n\n### 2. Autenticação de Usuário\n\n1.  **Desafio Criptográfico**: O servidor envia um desafio ao cliente.\n2.  **Assinatura Digital**: O dispositivo do usuário usa a chave privada correspondente para assinar o desafio.\n3.  **Verificação no Servidor**: O servidor verifica a assinatura usando a chave pública previamente armazenada. Se for válida, o login é concluído.\n\n### Segurança\n\n-   Os dados biométricos (como impressões digitais) **nunca deixam o dispositivo do usuário**.\n-   O servidor só armazena a chave pública, que é inútil sem a chave privada armazenada no dispositivo do usuário.\n-   As chaves criptográficas são únicas por site, impedindo ataques de reutilização.\n\n## Arquitetura da Aplicação\n\n-   **Frontend (JavaScript)**:\n    \n    -   Usa a API `navigator.credentials` para interagir com o dispositivo do usuário.\n    -   Envia e recebe desafios criptográficos do servidor.\n-   **Backend (PHP)**:\n    \n    -   Gera desafios e argumentos para registro e autenticação.\n    -   Processa as respostas do cliente e verifica a autenticidade das credenciais.\n\n### Fluxo de Comunicação\n```\n*\n* Script de teste do servidor para a biblioteca WebAuthn.\n*\n*                CLIENTE       |    SERVIDOR\n* ------------------------------------------------------------\n*                              |\n*                          REGISTRO\n*                              |\n*    window.fetch------------\u003e |    getCreateArgs (argumentos de criação)\n*                              |           |\n*                              |           |\n*  navigator.credentials.create \u003c----------'(criar credenciais de navegador)\n*                    |         |\n*                    |         |\n*                    '--------------------\u003e processCreate (processar criação)\n*                              |            |\n*                              |            |\n*    alerta sucesso ou falha   | \u003c----------'\n*                              |\n* ------------------------------------------------------------\n*                              |\n*                         VALIDAÇÃO\n*                              |\n*      window.fetch------------------\u003egetGetArgs (obter argumentos de obtenção)\n*                              |            |\n*                              |            |\n*    navigator.credentials.get \u003c------------' (obter credenciais de navegador)\n*                 |            |\n*                 |            |\n*                 '-----------------------\u003e processGet (processar obtenção)\n*                              |              |\n*                              |              |\n*      alerta sucesso ou falha | \u003c------------'\n*\n* ------------------------------------------------------------\n*\n\n```\n## Termos de Privacidade\n\n### Dados Coletados\n\n-   Chaves públicas associadas ao usuário (armazenadas no banco de dados).\n-   Informações de hardware do dispositivo de autenticação.\n\n### Uso de Dados\n\n-   As informações coletadas são utilizadas exclusivamente para autenticação.\n-   Nenhuma informação biométrica (como impressões digitais) é enviada ou armazenada no servidor.\n\n### Segurança\n\n-   Os dados armazenados são protegidos por criptografia e seguem as melhores práticas de segurança.\n-   Em caso de comprometimento do servidor, as informações armazenadas não podem ser usadas para comprometer as credenciais do usuário.\n\n## Requisitos para Uso\n\n-   **Navegador Compatível**: Google Chrome, Firefox ou qualquer navegador que suporte WebAuthn.\n-   **Servidor PHP**: Versão 7.4 ou superior.\n-   **Banco de Dados**: MySQL ou SQLite.\n\n## Configuração\n\n1.  Clone o repositório e inicie o PHP:\n```\ngit clone https://github.com/faustinopsy/digital/.git\ncd digital\nphp -S localhost:8000\n```\n\npara testar:\nhttps://digital.ceuvago.com\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffaustinopsy%2Fdigital","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffaustinopsy%2Fdigital","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffaustinopsy%2Fdigital/lists"}