mxl / laravel-api-key
用于Laravel的API密钥授权,具有重放攻击防护
v1.0.1
2020-07-24 12:33 UTC
Requires
- php: >=7.1
- laravel/framework: 5.5.*|5.6.*|5.7.*|5.8.*|^6.0|^7.0
Requires (Dev)
- phpunit/phpunit: ^7.5
This package is auto-updated.
Last update: 2024-09-25 01:35:33 UTC
README
Laravel的API密钥授权,具有重放攻击防护
安装
$ composer require mxl/laravel-api-key
它是如何工作的?
客户端和服务器(即客户端和服务器)都有一把密钥。客户端计算一个token - 将密钥和当前时间戳连接后的哈希值。将Token和时间戳作为单独的HTTP头部发送到服务器。服务器重新计算哈希值,通过比较这个值和验证token来验证它,并检查收到的时间戳是否属于当前时间 ± 窗口间隔。
配置
包使用来自 vendor/laravel-api-key/config/apiKey.php
的默认配置
<?php return [ 'secret' => env('API_KEY_SECRET'), 'hash' => env('API_KEY_HASH', 'md5'), 'timestampHeader' => env('API_KEY_TIMESTAMP_HEADER', 'X-Timestamp'), 'tokenHeader' => env('API_KEY_TOKEN_HEADER', 'X-Authorization'), 'window' => env('API_KEY_WINDOW', 30), ];
要更改它,请设置此配置中提到的环境变量或使用以下命令将其复制到您的项目中
$ php artisan vendor:publish --provider="MichaelLedin\LaravelApiKey\ApiKeyServiceProvider" --tag=config
并修改 config/apiKey.php
文件。
注意! 如果您使用 php artisan config:cache
或 php artisan optimize
命令,那么您必须按照上述说明发布配置,否则 env()
函数将返回所有环境变量的 null
。 阅读更多。
配置有以下参数
secret
- 客户端和服务器都知道的密钥;hash
- 用于从密钥和时间戳创建哈希值的算法;对于支持的算法列表,请检查 hash_algos 函数的输出;timestampHeader
- 用于传递时间戳的HTTP头部;tokenHeader
- 用于传递Token的HTTP头部;window
- 窗口间隔,以秒为单位;
使用
使用中间件类名或别名将中间件分配给路由
use \MichaelLedin\LaravelApiKey\AuthorizeApiKey; Route::get('admin/profile', function () { // })->middleware(AuthorizeApiKey::class);
或
Route::get('admin/profile', function () { // })->middleware('apiKey');
维护者
作者的其他有用Laravel包
- mxl/laravel-queue-rate-limit - 简单的Laravel队列速率限制;
- mxl/laravel-job - 从命令行调度作业等;
许可证
有关详细信息,请参阅 LICENSE 文件。