enygma/yubikey

PHP 库,用于与 Yubikey REST API 进行接口交互

3.8 2024-06-05 14:15 UTC

This package is auto-updated.

Last update: 2024-09-05 14:49:17 UTC


README

Travis-CI Build Status Codacy Badge Code Climate Total Downloads

这个库让您可以轻松地与 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]