diimolabs / laravel-oauth2-client
用于处理微服务之间授权通信的包
1.0.3
2021-07-28 00:34 UTC
Requires
- php: >=7.4
- firebase/php-jwt: ^5.4
- guzzlehttp/guzzle: ^7.3
This package is not auto-updated.
Last update: 2024-10-02 15:33:08 UTC
README
允许两个或更多项目之间安全通信的包,主要针对微服务架构使用,除了通过IP地址和白名单在网络级别提供的安全之外,还添加了OAuth2授权标准,这可能已经拥有。
特性
- 简单实现
- 不会增加微服务之间请求的延迟。
- 高度安全性
先决条件
-
拥有授权服务器,建议使用Laravel Passport,特别是客户端凭证令牌部分。
-
在需要通信的微服务中将文件
oauth-public.key存储在文件夹storage/app/中,此文件由授权服务器提供。
安装
-
导入库
composer require diimolabs/laravel-oauth2-client -
添加以下环境变量
OAUTH_HOST= OAUTH_CLIENT_ID= OAUTH_CLIENT_SECRET=并使用创建项目客户端时授权服务器提供的数据进行填充
-
在文件
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