enygma / yubikey
PHP 库,用于与 Yubikey REST API 进行接口交互
3.8
2024-06-05 14:15 UTC
Requires
- php: >=7.4
Requires (Dev)
- codeclimate/php-test-reporter: dev-master
- phpunit/phpunit: 4.3.2
README
这个库让您可以轻松地与 Yubico REST API 交互,以验证 Yubikey 生成的代码。
要求
- 从 Yubico 网站请求的 API
- 从 Yubico 请求的客户端 ID
- 用于测试实现的 Yubikey
安装
使用以下命令通过 Composer 安装库:
composer require enygma/yubikey
用法
查看 test.php
示例脚本来了解如何使用它。它可以像以下这样执行:
php test.php [生成的密钥]
示例代码
<?php $apiKey = 'dGVzdGluZzEyMzQ1Njc4OTA='; $clientId = '12345'; $v = new \Yubikey\Validate($apiKey, $clientId); $response = $v->check($inputtedKey); echo ($response->success() === true) ? 'success!' : 'you failed. aw.'; ?>
HTTP vs HTTPS
默认情况下,库将尝试使用 HTTPS 请求到指定的主机。如果您出于某些原因需要禁用此功能(如没有 SSL 支持),可以使用 setUseSecure
方法将其设置为 false
$v = new \Yubikey\Validate($apiKey, $clientId); $v->setUseSecure(false);
覆盖主机
该库包含一组用于 Yubico 外部 API 服务器(从 api.yubico.com 到 api5.yubico.com)的主机名。如果您需要覆盖这些主机名,可以使用 setHosts
$v = new \Yubikey\Validate($apiKey, $clientId); $v->setHosts(array( 'api.myhost1.com', 'api1.myhost.com' ));
记住,这将 覆盖 类中当前的主机,因此请确保您不再需要这些主机。如果您只想添加另一个主机,请查看 addHost
方法。
多服务器请求
此外,该库还支持同时对多个服务器进行连接。默认情况下,它只会向 hosts
列表中的第一个服务器发送请求。您可以通过在 check()
方法的第二个参数上启用多服务器检查来实现多服务器检查
<?php $v = new \Yubikey\Validate($apiKey, $clientId); $response = $v->check($inputtedKey, true); echo ($response->success() === true) ? 'success!' : 'you failed. aw.'; ?>
这将进行多次请求,并返回每个聚合响应的通过/失败状态。因此,如果您所有但一个服务器通过,总体响应将是失败。如果所有返回 OK
,则您就安全了。
"第一个"结果
此外,您还可以打开和关闭此结果聚合,并仅使用“第一个”响应。您可以通过 success
检查方法的标志来实现这一点
<?php $v = new \Yubikey\Validate($apiKey, $clientId); $response = $v->check($inputtedKey, true); echo ($response->success(true) === true) ? 'success!' : 'you failed. aw.'; ?>
注意:即使没有多服务器检查,这仍然有效。第一个将始终是单个响应。
@作者 Chris Cornutt [email protected]