【问题标题】:OAuth 2 client implementation how to request for new scope?OAuth 2 客户端实现如何请求新范围?
【发布时间】:2015-07-24 13:38:59
【问题描述】:

我正在我们的客户端(Android 应用)上实现 OAuth 2 流。客户端是我们的应用程序,它与受信任的服务器通信。这里没有第三方。

当用户登录时,我使用客户端 ID 和密码从服务器获取授权码,最终获得访问令牌。

我在应用程序中存储了访问令牌以及刷新令牌和特定范围的到期时间,例如“X”。

现在我们正在向应用程序添加一项新功能,但服务器要求我发送范围“Y”以从服务器访问该功能的资源。

我的问题是

  1. 我是否需要告诉服务器此用户需要范围“Y”?如果是,我该怎么做?我只有范围“X”的访问令牌和刷新令牌。服务器是否需要公开一项服务,该服务采用我当前的访问令牌和新范围,并为范围 'X' 和 'Y' 返回一个新的访问令牌?我迷路了吗?

  2. 在客户端,我假设一个访问令牌应该映射到多个范围。

【问题讨论】:

    标签: java android oauth-2.0


    【解决方案1】:

    查看规范here

    授权和令牌端点允许客户端使用“范围”请求参数指定访问请求的范围。

    e.g server may have scope : view_my_picture delete_my_picture create_entry_in_album

    grant_type=<e.gclient_credentials>&client_id=<yourApp>&client_secret=<secret>&scope=view_my_picture

    服务器可能会提供所有请求的权限或修改后的列表(例如因为用户拒绝了某些权限):

    如果颁发的访问令牌范围与客户端请求的范围不同,授权服务器必须包含“范围”响应参数以通知客户端授予的实际范围。

    【讨论】:

    • 谢谢。我的问题更多关于如何添加新范围或请求新范围而无需用户重新登录或再次提供其凭据?或者换句话说,向与不同范围绑定的现有访问令牌添加/请求额外范围的标准做法是什么?
    猜你喜欢
    • 1970-01-01
    • 2021-04-25
    • 2020-02-21
    • 1970-01-01
    • 1970-01-01
    • 2015-07-06
    • 2012-10-10
    • 2016-04-30
    • 1970-01-01
    相关资源
    最近更新 更多