deniseilander / laravel-passport-scopes-restriction
限制不同Laravel Passport客户端的作用域。
Requires
- php: ^8.2
- ext-json: *
- illuminate/contracts: ^11.0
- laravel/passport: ^12.0
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- mockery/mockery: ^1.6
- nunomaduro/collision: ^8.1.1
- nunomaduro/larastan: ^2.9
- orchestra/testbench: ^9.0.0
- phpunit/phpunit: ^10.5
README
此包允许您限制客户端可以请求的作用域。
默认情况下,Laravel Passport 不支持按客户端限制作用域。每个客户端都可以访问项目中所有可用的作用域。此包解决了该问题。
何时使用此包
当您的API项目包含多个第三方oauth_clients,且您无法控制它们请求的作用域时,您可能想限制客户端可以请求的作用域。
安装
您可以通过composer安装此包
composer require denniseilander/laravel-passport-scopes-restriction
您可以使用以下命令发布和运行迁移
php artisan vendor:publish --provider="Denniseilander\PassportScopeRestriction\PassportClientServiceProvider" --tag="passport-scopes-restriction-migrations" php artisan migrate
可选地,您可以使用以下命令发布配置文件
php artisan vendor:publish --provider="Denniseilander\PassportScopeRestriction\PassportClientServiceProvider" --tag="passport-scopes-restriction-config"
使用方法
在运行迁移后,您可能需要将特定的作用域添加到每个oauth_clients的allowed_scopes
列。您可以像将作用域分配给oauth_access_tokens的scopes
列一样分配特定的作用域
// one scope ["read-users"] // multiple scopes ["read-users","edit-users"]
每次请求特定客户端的访问令牌时,都会将allowed_scopes
添加到该令牌的scopes
列。
您也可以在POST: passport/oauth
请求中添加一个允许的作用域,以将特定作用域分配给该访问令牌
// The same scopes are defined in the allowed_scopes column of the oauth_clients table Passport::tokensCan([ 'scope-1' => 'Scope 1', 'scope-2' => 'Scope 2', 'scope-3' => 'Scope 3', ]); POST /oauth/token ?scope=scope-1
这将只分配scope-1
给访问令牌。
您也可以留空作用域字段,这将把所有允许的作用域分配给访问令牌
同步现有作用域与新允许的作用域
有时您的oauth_access_tokens
表中已填充了现有令牌,并且您想更新作用域,因为您已更改特定客户端的allowed_scopes
值。
通过运行以下命令,此包使您轻松同步现有令牌的作用域与允许的作用域变得简单
php artisan passport:scopes-sync
如果您已将新作用域添加到客户端表中的allowed_scopes
列,但希望保留现有令牌上的作用域,您可以在同步命令中添加--keep-existing-scopes
标志
php artisan passport:scopes-sync --keep-existing-scopes
测试
composer test
变更日志
请参阅 CHANGELOG 了解最近更改的更多信息。
贡献
请参阅 CONTRIBUTING 了解详细信息。
安全漏洞
请查看 我们的安全策略 了解如何报告安全漏洞。
鸣谢
许可
MIT许可(MIT)。有关更多信息,请参阅 许可文件。