deniseilander/laravel-passport-scopes-restriction

限制不同Laravel Passport客户端的作用域。

3.0.0 2024-07-13 14:40 UTC

This package is auto-updated.

Last update: 2024-09-15 02:12:59 UTC


README

Packagist Version PHP Version Support GitHub Workflow Status (with branch) Total Downloads

此包允许您限制客户端可以请求的作用域。
默认情况下,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)。有关更多信息,请参阅 许可文件