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