designmynight/laravel-oauth-introspect-middleware

Laravel 包,允许资源所有者使用远程授权服务器验证 OAuth2 访问令牌

v3.0.0 2023-06-19 08:56 UTC

README

特别是在微服务架构中,认证和授权功能应该委托。通过将 Web 服务实现为纯 OAuth2 资源服务器,并依赖于远程授权服务器上的令牌验证来保护资源是最佳做法。

Laravel OAuth 2.0 令牌检查中间件

Laravel Passport 提供了完整的 OAuth2 服务器实现,但仍缺少 OAuth 2.0 令牌检查(RFC7662)中定义的可选 OAuth2 功能。

检查端点由 ipunkt/laravel-oauth-introspection 提供。此包提供验证访问令牌所需的中介件,以对远程检查端点进行验证。

注意:为了防止令牌扫描攻击,此端点还必须要求某种形式的授权才能访问。提供的中间件假定检查端点需要使用客户端凭证授权检索的 OAuth2 Bearer 令牌。因此,您必须提供有效的 客户端 ID客户端密钥

安装

在您的资源服务器上安装该包

composer require designmynight/laravel-oauth-introspect-middleware

并在您的 config/app.php 中添加服务提供者

'providers' => [
     // [..]
    \DesignMyNight\Laravel\OAuth2\IntrospectMiddlewareServiceProvider::class
     // [..]
];

并在您的 App/Http/Kernel.php 中添加中间件

protected $routeMiddleware = [
    // [..]
    'verifyaccesstoken' => \DesignMyNight\Laravel\OAuth2\VerifyAccessToken::class,
    // [..]   
];

发布配置

php artisan vendor:publish

最后,在您的 .env 文件中定义以下属性

# Url of the authorization server
AUTHORIZATION_SERVER_URL="https://authorization.server.dom"
# Client Identifier as defined in https://tools.ietf.org/html/rfc6749#section-2.2
AUTHORIZATION_SERVER_CLIENT_ID="123"
# The client secret
AUTHORIZATION_SERVER_CLIENT_SECRET="abcdefg"
# Endpoint for requesting the access token
AUTHORIZATION_SERVER_TOKEN_URL="${AUTHORIZATION_SERVER_URL}/oauth/token"
# The OAuth2 Introspection endpoint https://tools.ietf.org/html/rfc7662
AUTHORIZATION_SERVER_INTROSPECT_URL="${AUTHORIZATION_SERVER_URL}/oauth/introspect"

# Optional configuration for requesting an OAuth2 access tokens using the implicit grant flow 
AUTHORIZATION_SERVER_AUTHORIZATION_URL="${AUTHORIZATION_SERVER_URL}/oauth/authorize"
AUTHORIZATION_SERVER_REDIRECT_URL=https://my.machine.dom

现在,使用中间件。

Route::group(['middleware'=>'verifyaccesstoken:required-scope1,required-scope2'], function () {
	Route::get('/endpoint1', 'UserController@index');
	Route::resource('/resource', 'OrderController');
});