gpt4 book ai didi

oauth-2.0 - Oauth2、范围和用户角色

转载 作者:行者123 更新时间:2023-12-03 21:36:03 26 4
gpt4 key购买 nike

我在这里从概念上提出一个问题,因为我试图了解基于 OAuth2 的系统中范围和用户角色之间的关系。

在实现 API 时,我想通过对资源使用范围来限制对特定资源的访问。我了解使用访问 token 来请求资源,并且我相信我的理解是正确的,因为您在请求访问 token 时指定了您的范围。

我不完全确定的是如何根据经过身份验证的用户所在的特定角色来限制范围。假设 Bob 是管理员,Sue 是普通用户。我们有一些受 is_admin 范围保护的资源。是什么阻止了 Sue 在她的访问 token 中请求(和接收)is_admin 范围?

我在想应该发生的事情如下:

  • Bob 进行身份验证。
  • Bob 的角色在他的身份验证完成后进行查找。他的“管理员”角色附加了“is_admin”范围。
  • Bob 要求一个访问 token ,其中包含从他的各种角色中收集的所有范围
  • Bob 自动获得访问 token
  • 的这些范围

    是否由我的调用应用程序强制仅发送请求 Bobs 需要的范围?或者我在范围方面缺少什么?

    有人可以用一些简单的例子来启发我吗?

    最佳答案

    OAuth2 ,有以下角色:

  • 资源所有者 - 通常是某个人
  • 身份验证提供程序 - OAuth2 服务器
  • 资源服务器 - 需要访问 token 并验证其范围的 API
  • 客户端应用程序 - 请求具有某些范围的访问 token 的应用程序。

  • 要理解 OAuth2,有必要将其视为从资源所有者到客户端应用程序的访问权限委派协议(protocol)。所以主要用例是:客户端应用程序想要访问资源服务器。为此,客户端应用程序需要一个由 Auth 提供者颁发并由资源所有者授权的访问 token (由 Auth 提供者进行身份验证)。
    在您的描述中,缺少客户端应用程序。假设它是您的 API 的前端应用程序。它需要一个范围为 admin-user-scope 的访问 token 或 regular-user-scope .因此它将用户(资源所有者)重定向到 Auth 提供者,同时请求两个范围。
    Auth 提供者对用户进行身份验证,并要求他/她同意将某些请求的范围授予客户端应用程序。身份验证提供者 may remove some scopes - 例如 admin-user-scope对于非管理员。 Auth 提供者也可以让用户删除一些范围。
    客户端应用程序在重定向 URI 中接收具有范围的访问 token (或授权)。如果授权范围与请求的范围不同,则身份验证提供程序会发送授权范围列表( scope URL 参数)以及访问 token ,以便客​​户端应用程序知道它可以使用访问 token 执行哪些操作。
    然后客户端应用程序可以访问资源服务器,并且资源服务器确保提供的访问 token 包含所需的范围。资源服务器使用 OAuth2 introspection endpoint验证 token 并获取其范围列表。

    关于oauth-2.0 - Oauth2、范围和用户角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48581556/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com