havenshen / larsign
Laravel 签名认证与 Web API 服务器。
Requires (Dev)
- orchestra/testbench: ~3.0
- phpunit/phpunit: ^6.5
This package is auto-updated.
Last update: 2024-08-27 11:43:37 UTC
README
关于
larsign
包授权签名服务器。
特性
- 处理 larsign 请求
安装
Laravel
在您的 composer.json
中添加 havenshen/larsign
包,并更新依赖项
$ composer require havenshen/larsign
将 HavenShen\Larsign\LarsignServiceProvider
添加到您的 config/app.php
提供者数组中
HavenShen\Larsign\LarsignServiceProvider::class,
将 HavenShen\Larsign\LarsignFacade
添加到您的 config/app.php
别名数组中
'Larsign' => HavenShen\Larsign\LarsignFacade::class,
Lumen
在您的 composer.json
中添加 havenshen/larsign
包,并更新依赖项
$ composer require havenshen/larsign
在 bootstrap/app.php
中使用 lumen 注册该包,如下所示
$app->register(HavenShen\Larsign\LarsignServiceProvider::class);
全局使用
要允许 Larsign 对所有路由生效,请在 app/Http/Kernel.php
类的 $middleware
属性中添加 HandleLarsign
中间件
protected $middleware = [ // ... \HavenShen\Larsign\HandleLarsign::class, ];
分组中间件
如果您想允许特定中间件组或路由使用 Larsign,请将 HandleLarsign
中间件添加到该组
protected $middlewareGroups = [ 'web' => [ // ... ], 'api' => [ // ... \HavenShen\Larsign\HandleLarsign::class, ], ];
应用程序路由中间件
如果您想允许特定应用程序中间件或路由使用 Larsign,请将 HandleLarsign
中间件添加到应用程序路由
protected $routeMiddleware = [ // ... 'auth.larsign' => \HavenShen\Larsign\HandleLarsign::class, ];
配置
默认值在 config/larsign.php
中设置。将此文件复制到您的配置目录以修改值。如果您使用 Laravel,可以使用以下命令发布配置
$ php artisan vendor:publish --provider="HavenShen\Larsign\LarsignServiceProvider"
如果您使用 Lumen,将配置文件 larsign.php
从 vendor/havenshen/larsign/config/larsign.php
复制到您的 config/
目录
return [ /* |-------------------------------------------------------------------------- | Larsign |-------------------------------------------------------------------------- | */ 'headerName' => env('LARSIGN_HEADER_NAME', 'Larsign'), 'accessKey' => env('LARSIGN_ACCESS_KEY', ''), 'secretKey' => env('LARSIGN_SECRET_KEY', ''), ];
在 routes/api.php
中添加 API 路由,复制以下内容。
Route::middleware(['auth.larsign'])->group(function () { Route::get('/larsign', function () { return [ 'message' => 'done.' ]); });
或
Route::get('/larsign', function () { return [ 'message' => 'done.' ]; })->middleware('auth.larsign');
客户端
生成 Larsign
签名
- 假设以下管理凭据
AccessKey = "test" SecretKey = "123456"
- 调用接口地址
url = "https://larsign.dev/api/v1/test?page=1"
- 待签名原始字符串
注意:时间戳后跟换行符 [当前时间 + 凭证有效秒数]
signingStr = "/api/v1/test?page=1\n1510986405"
- Base64 URL 安全编码
signingStrBase64UrlSafeEncode = "L2FwaS92MS90ZXN0P3BhZ2U9MQoxNTEwOTg2NDY1"
hmac_sha1
带有SecretKey
加密然后进行 Base64 URL 安全编码
sign = "MLKnFIdI-0TOQ4mHn5TyCcmWACU="
- 最终的行政凭据如下
注意:将
headerName
空格AccessKey
:sign
:signingStrBase64UrlSafeEncode
焊接
larsignToken = "Larsign test:MLKnFIdI-0TOQ4mHn5TyCcmWACU=:L2FwaS92MS90ZXN0P3BhZ2U9MQoxNTEwOTg2NDY1"
- 添加 HTTP 标头
注意:在
config/larsign.php -> headerName
中的头键
Larsign:Larsign test:MLKnFIdI-0TOQ4mHn5TyCcmWACU=:L2FwaS92MS90ZXN0P3BhZ2U9MQoxNTEwOTg2NDY1
客户端签名授权失败
Http Response: 403
测试
$ phpunit
许可证
MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件。