资讯专栏INFORMATION COLUMN

Laravel 5 API 服务端支持签名授权认证

xioqua / 711人阅读

摘要:服务端支持签名授权认证项目地址关于

Laravel 5 API 服务端支持签名授权认证

Github 项目地址: https://github.com/HavenShen/larsign

Api Authorized Signature Middleware for Laravel 5 关于

The larsign package authorized signature server.

Features

Handles larsign requests

Installation

Require the havenshen/larsign package in your composer.json and update your dependencies:

$ composer require havenshen/larsign

Add the HavenShenLarsignLarsignServiceProvider to your config/app.php providers array:

HavenShenLarsignLarsignServiceProvider::class,

Add the HavenShenLarsignLarsignFacade to your config/app.php aliases array:

"Larsign" => HavenShenLarsignLarsignFacade::class,
Global usage

To allow Larsign for all your routes, add the HandleLarsign middleware in the $middleware property of app/Http/Kernel.php class:

protected $middleware = [
    // ...
    HavenShenLarsignHandleLarsign::class,
];
Group middleware

If you want to allow Larsign on a specific middleware group or route, add the HandleLarsign middleware to your group:

protected $middlewareGroups = [
    "web" => [
       // ...
    ],

    "api" => [
        // ...
        HavenShenLarsignHandleLarsign::class,
    ],
];
Application route middleware

If you want to allow Larsign on a specific application middleware or route, add the HandleLarsign middleware to your application route:

protected $routeMiddleware = [
    // ...
    "auth.larsign" => HavenShenLarsignHandleLarsign::class,
];
Configuration

The defaults are set in config/larsign.php. Copy this file to your own config directory to modify the values. You can publish the config using this command:

$ php artisan vendor:publish --provider="HavenShenLarsignLarsignServiceProvider"
return [
    /*
     |--------------------------------------------------------------------------
     | Larsign
     |--------------------------------------------------------------------------
     |
     */
    "headerName" => env("LARSIGN_HEADER_NAME", "Larsign"),
    "accessKey" => env("LARSIGN_ACCESS_KEY", ""),
    "secretKey" => env("LARSIGN_SECRET_KEY", ""),
];

Add api route in routes/api.php Copy this.

Route::middleware(["auth.larsign"])->group(function () {
    Route::get("/larsign", function () {
    return [
        "message" => "done."
    ]);
});

or

Route::get("/larsign", function () {
    return [
        "message" => "done."
    ];
})->middleware("auth.larsign");
Client

Generate Larsign signatures

Assume the following management credentials:

AccessKey = "test"
SecretKey = "123456"

Call interface address:

url = "https://larsign.dev/api/v1/test?page=1"

The original string to be signed:

note: the time-stamping followed by a newline [currenttime + voucher valid seconds]

signingStr = "/api/v1/test?page=1
1510986405"

Base64 url safe encode:

signingStrBase64UrlSafeEncode = "L2FwaS92MS90ZXN0P3BhZ2U9MQoxNTEwOTg2NDY1"

hmac_sha1 carries SecretKey encryption then base64 url safe encode:

sign = "MLKnFIdI-0TOQ4mHn5TyCcmWACU="

The final administrative credentials are:

note: stitching headerName Space AccessKey:sign:signingStrBase64UrlSafeEncode

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

Add http header:

note: header key in config/larsign.php -> headerName

Larsign:Larsign test:MLKnFIdI-0TOQ4mHn5TyCcmWACU=:L2FwaS92MS90ZXN0P3BhZ2U9MQoxNTEwOTg2NDY1
Client signature authorization failed
Http Response: 403
Testing
$ phpunit
License

The MIT License (MIT). Please see License File for more information.

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/26195.html

相关文章

  • HTTP API 设计入坑指南(二)

    摘要:而只需要服务端生成,客户端保存,每次请求在头部中使用携带,服务端认证解析就可。如果缓存不清理,验证码就会一直有效,不安全。 一、授权 参考文献:https://blog.risingstack.com/... 1. Basic authentication (最简单,适用于没有第三方的请求接口中) 客户端发送authorization,内容为 Basic Base64编码(usern...

    JayChen 评论0 收藏0
  • HTTP API 设计入坑指南(二)

    摘要:而只需要服务端生成,客户端保存,每次请求在头部中使用携带,服务端认证解析就可。如果缓存不清理,验证码就会一直有效,不安全。 一、授权 参考文献:https://blog.risingstack.com/... 1. Basic authentication (最简单,适用于没有第三方的请求接口中) 客户端发送authorization,内容为 Basic Base64编码(usern...

    pingan8787 评论0 收藏0
  • Laravel Passport里的授权类型介绍

    摘要:模糊授权,跟上面的认证码授权类似,不同的是,我们的资源服务器,返回的直接就是准入令牌,而不是认证码。 本文来自pilishen.com----原文链接; 欢迎来和pilishen一起学习php&Laravel;学习群:109256050 OAuth2是一个安全框架,控制着程序受保护部分的准入,主要是控制不同的客户端如何来调取API,保证它们在请求相应资源的时候有相应的权限。 Larav...

    RobinTang 评论0 收藏0
  • JWT、OAuth 2.0、session 用户授权实战

    摘要:为用户提供授权以允许用户操作非公开资源,有很多种方式。具体的代码根据不同的授权方案而有所不同。使用授权原理利用来验证用户,有两种机制实现。使用来实现用户授权主要用于签发如果有将异步的签名。注意这里的与之前用于签发的应该是同一个。 在很多应用中,我们都需要向服务端提供自己的身份凭证来获得访问一些非公开资源的授权。比如在一个博客平台,我们要修改自己的博客,那么服务端要求我们能够证明 我是...

    Jochen 评论0 收藏0
  • 浅析微信支付:微信支付简单介绍(小程序、公众号、App、H5

    摘要:本文是浅析微信支付系列文章的第二篇,主要讲解一下普通商户接入的支付方式以及其中的不同之处。浅析微信支付前篇大纲微信支付是集成在微信客户端的支付功能,用户可以通过手机完成快速的支付流程。目前微信支付支持手机系统有苹果安卓和。 本文是【浅析微信支付】系列文章的第二篇,主要讲解一下普通商户接入的支付方式以及其中的不同之处。 上篇文章讲了本系列的大纲,没有看过的朋友们可以看一下。 浅析微信支...

    shadowbook 评论0 收藏0

发表评论

0条评论

xioqua

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<