yymartin/fido2-php

PHP 的 FIDO2 服务器库

1.0 2020-07-02 07:22 UTC

This package is auto-updated.

Last update: 2024-09-29 05:55:45 UTC


README

此存储库包含一个 PHP 库,用于实现 Webauthn 服务器

文档

此库主要基于 spomky-labs 的工作。相应的文档可以在以下位置找到:https://webauthn-doc.spomky-labs.com/

FIDO2 的详细信息,特别是 webauthn,可以在以下位置找到:https://www.w3.org/TR/webauthn-1/

安装

可以使用 composer 安装此库

composer require yymartin/fido2-php

用法

PublicKeyCredentialSourceRepository 实现

你需要做的第一件事是实现一个类:PublicKeyCredentialSourceRepository

PublicKeyCredentialSource 是一个表示认证器的对象。你存储和管理此对象的方式取决于每个项目的实现。因此,你需要自己实现它,并将此文件放置在以下位置:vendor/web-auth/webauthn-lib/src/PublicKeyCredentialSourceRepository.php

这里提供了一个示例,但不建议在生产环境中使用它,因为它将 PublicKeyCredentialSource 存储在文件中。

Fido2Server 用法

Fido2Server 是一个表示 Webauthn 服务器的对象。一个实例需要来自你的服务器和你要注册/登录的用户的信息。然后,你可以调用 register() 或 login() 函数。如果函数运行正确,则设置 SESSION['registered'] 或 SESSION['logged_in'] 的 SESSION 值,否则显示错误消息。

以下是一个示例

<?php
    require('./vendor/autoload.php');

    use WebauthnServer\FIDO2server;
    use Webauthn\PublicKeyCredentialSourceRepository;
    use Webauthn\PublicKeyCredentialUserEntity;

    $serverName = 'example';
    $serverDomain = 'www.example.com';

    $userID = '1';
    $userName = 'username';
    $userDisplayName = 'Display Name';

    $publicKeyCredentialSourceRepository = new PublicKeyCredentialSourceRepository();

    session_start();
    if (!isset($_SESSION['registered']) && !isset($_SESSION['logged_in'])){
        $server = new FIDO2Server($serverName, $serverDomain, $userID, $userName, $userDisplayName, $publicKeyCredentialSourceRepository);
        $server->register(); 
    } elseif(isset($_SESSION['registered']) && !isset($_SESSION['logged_in'])){
        $server = new FIDO2Server($serverName, $serverDomain, $userID, $userName, $userDisplayName, $publicKeyCredentialSourceRepository);
        $server->login();
    } else {
        echo 'Registered and logged in!';
    }
?>

警告

如果你正在开发你的项目,你可能会在本地运行服务器,并且可能需要禁用 HTTPS。为此,只需注释掉文件中的断言即可

  • vendor/web-auth/webauthn-lib/src/AuthenticatorAttestationResponseValidator.php(第 116 行)
  • vendor/web-auth/webauthn-lib/src/AuthenticatorAssertionResponseValidator.php(第 146 行)

许可证

此作品在 MIT 许可证 下发布。