havenshen/larsign

Laravel 签名认证与 Web API 服务器。

1.0.3 2017-12-05 12:26 UTC

README

Scrutinizer Code Quality Build Status Code Coverage Build Status Latest Stable Version Latest Unstable Version Latest Stable Version Total Downloads License

关于

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.phpvendor/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 签名

  1. 假设以下管理凭据
AccessKey = "test"
SecretKey = "123456"
  1. 调用接口地址
url = "https://larsign.dev/api/v1/test?page=1"
  1. 待签名原始字符串

注意:时间戳后跟换行符 [当前时间 + 凭证有效秒数]

signingStr = "/api/v1/test?page=1\n1510986405"
  1. Base64 URL 安全编码
signingStrBase64UrlSafeEncode = "L2FwaS92MS90ZXN0P3BhZ2U9MQoxNTEwOTg2NDY1"
  1. hmac_sha1 带有 SecretKey 加密然后进行 Base64 URL 安全编码
sign = "MLKnFIdI-0TOQ4mHn5TyCcmWACU="
  1. 最终的行政凭据如下

注意:将 headerName 空格 AccessKey:sign:signingStrBase64UrlSafeEncode 焊接

larsignToken = "Larsign test:MLKnFIdI-0TOQ4mHn5TyCcmWACU=:L2FwaS92MS90ZXN0P3BhZ2U9MQoxNTEwOTg2NDY1"
  1. 添加 HTTP 标头

注意:在 config/larsign.php -> headerName 中的头键

Larsign:Larsign test:MLKnFIdI-0TOQ4mHn5TyCcmWACU=:L2FwaS92MS90ZXN0P3BhZ2U9MQoxNTEwOTg2NDY1

客户端签名授权失败

Http Response: 403

测试

$ phpunit

许可证

MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件