如何使用JWT在OAuth应用中实现每客户端权限?

时间:2019-05-07 21:04:47

标签: oauth oauth-2.0 permissions auth0 restful-authentication

我已经在这个问题上争论了一段时间,得出的结论是我完全在错误的树上吠叫。

为了提供有关我要执行的操作的一些见解,我一直在整理API封装程序,以RESTful方式公开系统的核心功能。

包装器通过一些不同的API公开了核心功能。

例如

  • example.com/public/v1 /
  • example.com/private/v1 /
  • example.com/admin/v1 /

我正在使用Auth0为auth服务生成JWT,然后在收到请求时由API包装器进行验证。

我已经通过成功验证时通过JWT中提供的UID实现了用户权限。 API服务器检查请求的端点所需的权限,然后查看JWT中的UID是否已分配了这些权限。那一点有用。

除了能够为端点设置所需的用户权限外,我还希望能够设置更广泛的权限,以决定是否可以授权客户端应用程序对API进行任何调用。

例如

  • 授权admin客户端进行example.com/admin/v1/ API调用
  • 拒绝任何其他客户端对example.com/admin/v1/ API的访问

我一直在寻找OAuth范围来完成此任务。但是,自 RTFM 阅读以下内容后,我意识到我在使用错误的工具来完成这项工作:

  

范围是OAuth 2.0中的一种机制,用于限制应用程序的访问权限   用户帐户。一个应用程序可以请求一个或多个范围,这   然后在同意屏幕中向用户显示信息,并且   颁发给应用程序的访问令牌将仅限于   范围。

     

OAuth规范允许授权服务器或用户修改   与请求相比,授予应用程序的范围,   尽管没有很多服务的例子   练习。

     

OAuth不会为范围定义任何特定的值,因为它是   高度依赖于服务的内部架构和需求。

我认为范围可以用于指定应用程序可以使用一组资源执行的操作,但范围不用于此目的。它们用于指示应用程序可以代表用户做什么。

因此,用户权限决定了用户可以使用资源做什么。范围决定了应用程序可以代表用户做什么。什么可以用来指示应用程序有权访问哪些资源?

0 个答案:

没有答案