diimolabs/laravel-oauth2-client

用于处理微服务之间授权通信的包

1.0.3 2021-07-28 00:34 UTC

This package is not auto-updated.

Last update: 2024-10-02 15:33:08 UTC


README

允许两个或更多项目之间安全通信的包,主要针对微服务架构使用,除了通过IP地址和白名单在网络级别提供的安全之外,还添加了OAuth2授权标准,这可能已经拥有。

特性

  • 简单实现
  • 不会增加微服务之间请求的延迟。
  • 高度安全性

先决条件

  1. 拥有授权服务器,建议使用Laravel Passport,特别是客户端凭证令牌部分。

  2. 在需要通信的微服务中将文件oauth-public.key存储在文件夹storage/app/中,此文件由授权服务器提供。

安装

  1. 导入库

    composer require diimolabs/laravel-oauth2-client
    
  2. 添加以下环境变量

    OAUTH_HOST=
    OAUTH_CLIENT_ID=
    OAUTH_CLIENT_SECRET=
    

    并使用创建项目客户端时授权服务器提供的数据进行填充

  3. 在文件app/Http/kernel.php中实现验证输入请求授权的middleware

    protected $routeMiddleware = [
        // Other middleware...
        'jwt' => \Diimolabs\OAuth\Middleware\EnsureJwtIsValid::class
    ];

使用

请求资源到微服务的示例

use Diimolabs\OAuth\Facades\OAuthClient;
use Illuminate\Support\Facades\Route;

Route::prefix('v1')->group(function(){
    Route::get('message', function(){
        return OAuthClient::request()
            ->get('http://msa-2.test/api/v1/hello-world')
            ->body();
    });
});

微服务客户端请求示例

use Illuminate\Support\Facades\Route;

Route::prefix('v1')->middleware('jwt')->group(function ()
{
    Route::get('/hello-world', function ()
    {
        return 'Hello world from microservice 2';
    });
});

额外

使用以下方式导入配置文件

php artisan vendor:publish --tag=oauth-client

external_services中可以管理不同服务的URL