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
中通过以下方式注册larsign包
$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)。有关更多信息,请参阅许可文件。