otpd / libotpd-php
OTPD Authentication SDK for PHP
1.0.1
2025-02-17 07:01 UTC
Requires
- php: >=7.2
Requires (Dev)
- phpunit/phpunit: ^8.5
This package is not auto-updated.
Last update: 2025-06-23 09:06:03 UTC
README
概述
密令通服务端PHP语言SDK (原生开发),适用于PHP>=7.2。此SDK包含了以下几个功能:
- 提供动态令牌申请
- 动态口令验证等相关功能。
安装
你可以通过以下几种方式安装SDK,我们推荐通过 Composer 方式安装.
- 使用 Composer 安装
Composer是 PHP 依赖管理工具。你可以在自己的项目中声明所依赖的外部工具库,Composer 会自动帮你安装这些依赖的库文件。
运行 Composer 命令安装最新稳定版本的 SDK:
composer require otpd/libotpd-php
Require Composer 生成的 autoloader:
<?php require 'vendor/autoload.php';
- 下载源代码包 直接下载源代码压缩包并解压安装使用是另一种 SDK 的安装方法。不过因为有版本更新的维护问题,这种安装方法并不推荐,仅作为万一 Composer 安装有问题的情况下的一种备选。
使用方法
安装好 SDK 后,接下来介绍如何使用 SDK。在使用 SDK 之前,
- 联系密令通后台服务管理员,获得服务端地址
- 申请一个应用,取得该应用的 appId 和 appSecret
实例化客户端对象
通过服务端地址、应用appId 和 appSecret初始化一个Client对象,它提供了申请动态令牌、验证口令两个函数
$otpdClient = new Client($serverUrl,$appId,$appSecret);
申请动态令牌
调用客户端的applyCredential函数
- 输入参数 $userId 为用户唯一标识
- 输出参数为一个数组,包含两个元素,元素1表示种子密钥,元素2为错误信息,如果错误信息不为NULL,种子密钥信息不可取。
list($ret, $err) = $otpdClient->applyCredential($userId);
动态令牌申请成功后,需要在密令通移动端手动或扫码输入令牌激活。
示例代码:
<?php
require_once __DIR__ . '/vendor/autoload.php';
use Otpd\Client;
use Otpd\Http\Error;
/**
* 申请令牌示例代码
*/
$serverUrl="http://192.168.10.89:9130";
$appId="80bcdef329ef4ceeabf6dfa439e7b93a";
$appSecret="f780a18e8ed84f1d81e1dbe032f2e0f3";
$userId= "175****5150";
$otpdClient = new Client($serverUrl,$appId,$appSecret);
list($ret, $err) = $otpdClient->applyCredential($userId);
if ($err !== null) {
if($err instanceof Error){
echo $err->code() . " " .$err->message();
}
} else {
echo "SEED KEY:" .$ret;
}
验证口令
调用客户端的verifyCredential函数
- 输入参数 $userId 为用户唯一标识,$code为密令通移动端生成的动态口令
- 输出参数为一个错误信息,值为NULL视为成功,其他表示失败
$err = $otpdClient->verifyCredential($userId,$code);
示例代码:
<?php require_once __DIR__ . '/vendor/autoload.php';
use Otpd\Client; use Otpd\Http\Error; use Otpd\SM\RtSm4;
/**
- 验证动态口令示例代码 / $serverUrl="http://192.168.10.89:9130"; $appId="80bcdef329ef4ceeabf6dfa439e7b93a"; $appSecret="f780a18e8ed84f1d81e1dbe032f2e0f3"; $userId= "175***5150";
$otpdClient = new Client($serverUrl,$appId,$appSecret); $err = $otpdClient->verifyCredential($userId,"311338"); if ($err !== null) {
if($err instanceof Error){
echo $err->code() . " " .$err->message();
}else{
var_dump($err);
}
}else{
echo "Your code has been successfully verified";
}
## 注意事项
在应用系统显示用户输入动态口令的界面上,要显示提示信息“提示:尚未申请组工密令? 请点击这里”,并指向组工密令服务端地址,使得用户可以去组工密令系统申请组工密令。
### 跳转说明
- **组工密令服务端地址**:`http://192.168.x.x:9130/`
- **跳转 URL**:`http://192.168.x.x:9130/#/open/apply?appId=xxx`
- `/open/apply` 是密令通服务端对外提供的令牌申请界面。
- `appId=xxx` 为在密令通服务端注册应用的 appId。
- 如果不传递 `appId`,则使用默认应用。
### `appId` 说明
- 申请令牌需要提供 **手机号码** 和 **`appId`**。
- 如果多个应用需要使用 **相同** 的动态口令,只需使用同一个 `appId`。
- 如果不同应用需要使用 **不同** 的动态口令,则需创建多个应用,使用独立的 `appId`。