乐趣区

关于lavarel:Laravel-通过-Passport-实现-API-请求认证开放平台篇客户端凭证令牌

客户端凭证令牌的受权形式不须要走典型的登录或受权重定向流程,实用于后端与后端利用之间的接口认证,相似做微信、支付宝开放平台开发,须要先申请本人的利用,申请通过后,这些开放平台会给开发者调配对应的 APP ID 和 APP SECRET。而后开发者通过这个 APP ID 和 APP SECRET 去开放平台获取 Token(令牌),最初拿着这个令牌去拜访认证资源即可。客户端凭证令牌也是这个思路。

以测试项目 testapp 作为客户端利用,把后端我的项目 blog 作为相似微信、支付宝的开放平台。

在开放平台注册客户端利用

在开放平台 blog 中注册对应的客户端利用 testapp,在 blog 我的项目根目录下运行以下命令来注册 testapp

php artisan passport:client
> 
> testapp
> http://app.test/auth/callback

# 显示后果
CLIENT_ID=11
CLIENT_SECRET=XKmtGXC1CdG2LvhUpdp3y81IjuyrP0rLUPPq8reg

在客户端利用中定义路由和控制器

在客户端利用中定义获取令牌的路由,在 routes/web.php 新增上面行代码:

Route::get('/auth/client', 'Auth\LoginController@client');

而后在 LoginController 控制器中编写对应的 client 办法:

public function client()
{$http = new Client();
    $response = $http->post('http://blog.test/oauth/token', [
        'form_params' => [
            'grant_type' => 'client_credentials',
            'client_id' => 11,  // your client id
            'client_secret' => 'XKmtGXC1CdG2LvhUpdp3y81IjuyrP0rLUPPq8reg',   // your client secret
            'scope' => '*'
        ],
    ]);

    return response($response->getBody());
}

测试客户端利用拜访开放平台认证接口

在浏览器中拜访 http://app.test/auth/client,就能够获取到拜访令牌了。

客户端拜访令牌默认长期有效,所以没有返回用于刷新令牌的 refresh_token 字段。

能够通过将返回的 access_token 值增加到 Bearer Authentication 申请头中,来拜访开放平台 blog 中须要认证的 API 接口了。

在后端利用的 routes/api.php 中新增一个测试路由:

Route::middleware('client')->get('/test', function (Request $request) {return '欢送拜访后端利用!';});

在这个路由中利用了 client 中间件,示意该路由须要通过客户端凭证拜访令牌进行认证能力拜访。

接下来,在 app/Http/Kernel.php$routeMiddleware 属性中定义这个中间件:

'client' => \Laravel\Passport\Http\Middleware\CheckClientCredentials::class,

在 Postman 中测试这个 API 接口的拜访,将上述 /auth/client 申请返回的 access_token 值增加到 Bearer Token 申请头中,就能够获取到对应的接口返回数据了。

退出移动版