【问题标题】:Data authorization and OAuth数据授权和 OAuth
【发布时间】:2014-07-28 17:21:44
【问题描述】:
我想知道 OAuth 中是否有办法限制用户在访问令牌后可以看到的数据。例如,在“照片共享”示例中,一个应用程序包含照片列表,而另一个应用程序想要访问照片以进行打印。用户如何指示照片打印服务应该看到照片的子集?也许我只想让打印服务看到带有 .jpg 扩展名的照片,或者特定日期之后的照片,或者带有特定“标签”的照片。可以在哪里填写其他授权要求?
我有一个 java 应用程序,我们正在使用 Spring Security OAuth2,希望我们能做到这一点。
谢谢
【问题讨论】:
标签:
security
oauth-2.0
spring-security-oauth2
【解决方案1】:
例如,您可以为此目的使用“范围”。定义一个自定义的“范围”,您的服务的端点应该解释自定义范围并基于它进行行为。
例如,将 'pic_jpeg' 定义为范围名称,并在 API 文档中描述范围,例如“需要 'pic_jpeg' 范围才能访问 JPEG 图片。”
客户端应用程序将使用参数“scope=pic_jpeg scopeX scopeY”访问您的授权端点,并且您的 OAuth 2.0 授权服务器实现最终将发出一个与范围(pic_jpeg scopeX 和 scopeY)相关联的访问令牌。然后,客户端应用程序使用访问令牌访问服务的“图片”端点,因此该端点应确认访问令牌与“pic_jpeg”范围相关联,并仅在确认后才允许客户端应用程序访问 JPEG 图片。