【问题标题】:Do we use "scope" for client credential grant type? Why?我们是否将“范围”用于客户凭证授予类型?为什么?
【发布时间】:2020-02-10 16:26:19
【问题描述】:

在大多数 OAuth2 典型用例中,范围由需要用户登录的资源所有者密码授予类型或授权代码流使用。

看来scope主要是用来控制用户资源的访问的。例如,授权第 3 方客户端访问另一台服务器上的资源所有者(用户)资源。

在某些情况下,用户不存在。例如,一家公司只想为另一家公司提供 API。正在使用客户端凭据。大多数 API 网关产品都有订阅者管理选项来控制哪个客户端 ID 可以访问哪些 API。在这种情况下,使用 OAuth 范围来管理对 API 的访问是否仍然有意义?为什么?

此外,我找不到任何使用范围和客户端凭据授权类型的示例。它是罕见的用例吗?

【问题讨论】:

    标签: oauth-2.0 scopes


    【解决方案1】:

    Client Credentials 授权类型用于访问双方拥有/控制/信任的受保护资源。

    此授权类型支持范围。它们通常不被使用,因为信任已经存在并且不需要通过范围限制信任。

    换句话说,不使用作用域的原因是,如果不存在信任,则其他授权类型更合适。

    【讨论】:

    • 客户端和资源服务器的互信是什么意思?这是否意味着资源服务器始终信任来自该客户端的每个请求?如果服务器只允许客户端访问其资源的子集而不是全部怎么办?使用此信任模型而不是范围的最佳示例是什么?
    • 1) 如果客户端和服务器互不信任,请使用不同的授权类型。 2) 此授权类型支持范围。权限可以由请求的范围管理。由于客户端 ID 也是此授权类型的一部分,因此也可以根据客户端 ID 控制权限。 3) 这种授权类型用于两个系统之间,例如公司数据中心的两个系统。 4)由您决定信任和功能。 OAuth 规范没有定义这一点。
    • 我使用这种授权类型来授权一个应用程序与通过内部网络运行的另一个应用程序进行通信。 OAuth 令牌放置在 HTTP Authorization: Bearer <TOKEN> 标头中。对于这种授权类型,通常是这样部署的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多