我已经在这个问题上争论了一段时间,得出的结论是我完全在错误的树上吠叫。
为了提供有关我要执行的操作的一些见解,我一直在整理API封装程序,以RESTful方式公开系统的核心功能。
包装器通过一些不同的API公开了核心功能。
例如
我正在使用Auth0为auth服务生成JWT,然后在收到请求时由API包装器进行验证。
我已经通过成功验证时通过JWT中提供的UID实现了用户权限。 API服务器检查请求的端点所需的权限,然后查看JWT中的UID是否已分配了这些权限。那一点有用。
除了能够为端点设置所需的用户权限外,我还希望能够设置更广泛的权限,以决定是否可以授权客户端应用程序对API进行任何调用。
例如
我一直在寻找OAuth范围来完成此任务。但是,自 RTFM 阅读以下内容后,我意识到我在使用错误的工具来完成这项工作:
范围是OAuth 2.0中的一种机制,用于限制应用程序的访问权限 用户帐户。一个应用程序可以请求一个或多个范围,这 然后在同意屏幕中向用户显示信息,并且 颁发给应用程序的访问令牌将仅限于 范围。
OAuth规范允许授权服务器或用户修改 与请求相比,授予应用程序的范围, 尽管没有很多服务的例子 练习。
OAuth不会为范围定义任何特定的值,因为它是 高度依赖于服务的内部架构和需求。
我认为范围可以用于指定应用程序可以使用一组资源执行的操作,但范围不用于此目的。它们用于指示应用程序可以代表用户做什么。
因此,用户权限决定了用户可以使用资源做什么。范围决定了应用程序可以代表用户做什么。什么可以用来指示应用程序有权访问哪些资源?