资源提供者通常提供对资源的读写访问。
因此,资源提供者不仅应该验证令牌(它是否过期?它是否被撤销?它是否有效?它是否包含所需的范围?),他们还应该检查令牌的权限(使用 XY 是否具有足够的读取或写入权限资源ZY?)。
到目前为止,我使用了以下工作流程:
- 客户端通过 OAuth2 代码授权接收访问令牌。
- 客户代表用户提出请求,例如
GET /user_postings
- 资源服务(我们称之为User Postings)通过向授权服务器发出请求来验证令牌,确认令牌有效。授权服务器还传递令牌过期日期、令牌受众、令牌范围和令牌主题(例如用户 XY)等元数据
- 资源服务现在验证主题(例如用户 XY)是否被授权/允许执行请求。例如,通过检查访问控制列表或类似内容。例如:假设用户 XY 想要更新用户 AB 发布的用户。例如,这将被访问控制列表禁止。
- 如果验证通过,资源服务器将执行请求。
这是一种有效的做事方式还是我打开了攻击媒介?资源服务器是否可以假定令牌的主题是被视为授权请求的主题?是否有解决此问题的最佳实践或标准?
我目前很困惑,因为我读到 OAuth2 仅是委托,而不是授权或身份验证,并且客户端不应做出隐含的假设,例如“令牌 XY 属于用户 AB,因此用户 AB 已通过身份验证”。
任何帮助都将不胜感激。