定制 lingxi/api-authentication 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

lingxi/api-authentication

Composer 安装命令:

composer require lingxi/api-authentication

包简介

README 文档

README

使用前

这个包是目前比较业界安全的加密实践,不仅仅作为 lingxi api 的验证使用,有这种类似加密场景都可以使用这个 package,具体加密算法加文章最后。

Install

composer require lingxi/api-authentication

Usage

use Lingxi\Signature\Authenticator;

require __dir__ . '/vendor/autoload.php';

$auther = new Authenticator('key', 'secret');
$data = [
    'id' => 'cawzyvopker1gdxeqx82w6qm2x5l73n8',
];
echo 'http://api.lingxi.com/v1/partner/cms/content/show?' . http_build_query($auther->getAuthParams($data)) . PHP_EOL;

为了方便使用,我们封装了 Api Client,你可以使用它直接调用接口,获取结果

use Lingxi\Signature\Client;

$apiClient = new Client(
    $partner->partner_key,
    $partner->partner_secret
);

try {
    $response = $apiClient->order('id', 'asc')->get('/contact/show');

    // get response data
    $data = $response->getResponseData();

    // 大部分接口,response data 包含 data 和 meta 两部分,可以:
    $data = $response->getData();
    $meta = $response->getMeta();

    // 也支持作为对象属性获取
    $data = $response->data;
    $meta = $response->meta;
} catch (\Exception $e) {
    // deal with it...
}

签名验证方式

  • 首先验证时间戳是否在当前时间 600s 内
  • 其次验证 signature 是否正确

signature 参数生成步骤

设所有需要发送的数据为集合M,在集合M中增加当前时间戳stamp,随机字符串noncestr以及机构的api_key,然后将集合M内非空参数值(或空数组)的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。 对stringA进行sha256哈希计算,秘钥api_secret,得到signature值

signature 参数验证步骤

参数名ASCII码从小到大排序(字典序); 如果参数的值为空(或空数组)不参与签名; 参数名区分大小写; 验证调用返回或主动通知签名时,传送的signature参数不参与签名,将生成的签名与该signature参数值作校验。 接口可能会增加字段,验证签名时必须支持增加的扩展字段

lingxi/api-authentication 适用场景与选型建议

lingxi/api-authentication 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 11.8k 次下载、GitHub Stars 达 38, 最近一次更新时间为 2016 年 11 月 04 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 lingxi/api-authentication 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 lingxi/api-authentication 我们能提供哪些服务?
定制开发 / 二次开发

基于 lingxi/api-authentication 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 11.8k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 40
  • 点击次数: 3
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 38
  • Watchers: 6
  • Forks: 6
  • 开发语言: PHP

其他信息

  • 授权协议: Unknown
  • 更新时间: 2016-11-04