oauth-2.0 - OAuth 2 - 如何定义动态资源授权?

标签 oauth-2.0 resources authorization

作为资源服务器,我希望让用户能够更好地控制他们的资源。

例如,假设我有一个支持 OAuth 2 的云文件系统。

用户可以代表他向客户端提供访问文件的权限。

我希望资源服务器提供对特定文件夹的访问,例如,仅访问照片而不是文档。

文件夹的名称是动态资源,因为它因用户而异。

如何处理动态资源授权?动态范围?

此外,如果范围是动态的,客户端如何知道请求它?

* 在 the spec 中找不到它:(

最佳答案

文档 rfc6749 是 OAuth 2.0 规范,定义了一种通过使用附加参数来扩展 OAuth 2 的方法 (rfc6749#section-8.2)。 因此,如果您想使用 OAuth 解决此问题,您可以使用此方法或类似的方法:

  • 您为授权请求定义一个新参数来指定资源(例如:folderID=XXXXX)
  • 在授权请求期间,客户端可以选择使用新参数指定资源
  • 如果指定了该参数,您的授权服务器将生成一个“动态范围”,该范围必须由资源所有者签名
  • 如果不指定该参数,资源所有者可以选择他想要共享的资源,授权服务器可以生成相关的“动态范围”(这种情况意味着资源服务器在授权流程中以某种方式参与)
  • 当资源所有者定义并签署范围时,它们会传达给客户端(如果后者已由资源所有者定义,则客户端应该能够从范围中导出资源 ID)
  • 当客户端请求资源时,资源服务器还必须确保范围包含所请求的资源

请记住,如果每个用户的资源量不是很大,这种方法效果会更好(否则您可能会被范围淹没)。

另一种方法可能是在 OAuth 层后面添加额外的授权层。这个附加层跟踪客户端/可访问资源的关系。

关于oauth-2.0 - OAuth 2 - 如何定义动态资源授权?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36425975/

相关文章:

authorization - 为什么同时需要PolicySet和Policy?

c# - Windows 窗体安全 C#

android - 授权错误 Google Drive Android

python - Heroku Python Django 应用程序部署失败 : No module named 'oauth2_provider'

php - iOS 应用程序和用户身份验证。授权?

java - 不同语言的 Assets

php - 我可以将 PHP MySQL 资源变量分配/复制到其他吗?

python - Linkedin 401 错误通过 python

javascript - 避免在 HTML 中公开 LinkedIn API key

安卓图标没有出现