是否可以使用 Oauth2 范围来确定模型数据的范围?
Is possible to use Oauth2 scopes to scope model data?
我读到的关于 Oauth2 范围的每个地方都使用读取、写入、删除、post:read、post:delete 等示例...这始终代表“操作”,就像这是一个权限...
我的情况是我必须实施 API,它必须对用户进行身份验证,但限制用户访问仅属于他所属的同一公司的数据,该用户可能属于“N”家公司.
我想到为此目的使用 Oauth2 范围,然后在模型中使用 Laravel 的 eloquent 全局范围来过滤数据。
我卡住了,不知道如何进行。谁能给点建议?
您提到的需求中有2个概念:
范围是高级权限,表示数据区域和允许对该数据进行的操作 - 它们也是定义为系统设计一部分的静态值。避免尝试将它们用于动态逻辑。
声明是真正授权发生的地方,也是大多数域特定授权使用的地方。声明只是 JWT 中包含的额外字段。在您的情况下,可以发布公司 ID 的数组声明并将其包含在 API 接收的 JWT 中。
这两篇 Curity 文章更详细地解释了这一点,并提供了一些现实世界的例子。如果做得好,结果应该是您的 API 中的简单代码:
我读到的关于 Oauth2 范围的每个地方都使用读取、写入、删除、post:read、post:delete 等示例...这始终代表“操作”,就像这是一个权限...
我的情况是我必须实施 API,它必须对用户进行身份验证,但限制用户访问仅属于他所属的同一公司的数据,该用户可能属于“N”家公司.
我想到为此目的使用 Oauth2 范围,然后在模型中使用 Laravel 的 eloquent 全局范围来过滤数据。
我卡住了,不知道如何进行。谁能给点建议?
您提到的需求中有2个概念:
范围是高级权限,表示数据区域和允许对该数据进行的操作 - 它们也是定义为系统设计一部分的静态值。避免尝试将它们用于动态逻辑。
声明是真正授权发生的地方,也是大多数域特定授权使用的地方。声明只是 JWT 中包含的额外字段。在您的情况下,可以发布公司 ID 的数组声明并将其包含在 API 接收的 JWT 中。
这两篇 Curity 文章更详细地解释了这一点,并提供了一些现实世界的例子。如果做得好,结果应该是您的 API 中的简单代码: