ivanciric/ecdsa-auth

基于ECDSA的Laravel/Dingo API认证

dev-master 2018-11-23 14:45 UTC

This package is auto-updated.

Last update: 2024-09-24 04:54:43 UTC


README

基于公私钥签名的无密码认证。

ECDSA实现,用于Laravel/Dingo API,借助elliptic-phpkeccak包。

安装

composer require ivanciric/ecdsa-auth

库使用包自动发现功能,因此您不需要手动设置服务提供者。

发布包配置

php artisan vendor:publish

配置

发布配置后,您可以在config/ecdsaauth.php中编辑可用的选项。

使用方法

此包假设您已设置Dingo API。编辑config/api.php文件并将auth键设置为以下内容

'auth' => [
        'ivanciric\EcdsaAuth\Authenticator'
 ]

您需要在包配置中设置lookup_keykey_lookup_field以反映您的用户属性。

通过指定中间件来保护路由

$api->version('v1', ['middleware' => 'api.auth'], function ($api) {
    ...
});

创建负载

授权头应包含以下形式的负载

Eth eyJlbWFpbCI6ImhhQG1hLnRvIiwibWVzc2FnZSI6IjkyNThhNjQ0Y2FmZTZ...

Ecdsa eyJlbWFpbCI6ImhhQG1hLnRvIiwibWVzc2FnZSI6IjkyNThhNjQ0Y2FmZTZ...

负载本身是一个具有以下属性的base64编码json

{
    "email": "h@ma.to", // user's email or alternative lookup field
    "message": "message that you've signed", // string
    "signature": "3046022100a94c1a..." // signed message
}

所有属性都是可配置的。