yymartin / fido2-php
PHP 的 FIDO2 服务器库
Requires
- nyholm/psr7: ^1.3
- nyholm/psr7-server: ^1.0
- web-auth/webauthn-lib: ^3.2
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 许可证 下发布。