【问题标题】:How should scopes be defined for an API ecosystem with OAuth?应该如何为使用 OAuth 的 API 生态系统定义范围?
【发布时间】:2019-03-14 08:34:53
【问题描述】:

作为使用 OAuth 的 API 生态系统的创建者,您希望允许通过可附加到访问令牌的范围来访问您的 API。因此,我的问题是:

  • 如何定义范围?
  • 您是否希望您定义的任何范围仅提供对单个 API 中的资源/方法的访问,还是应该包括跨多个 API 的访问?
  • 您在 API 定义文件(如 Swagger/OAS 或 RAML)中与在某种 API 网关工具中定义范围的可能性有多大?
  • 是否应该在特定 API 的上下文之外定义范围,作为单独的 OAuth 管理工具的一部分,以及 IdP 注册和客户端应用程序创建等内容?

我意识到对此可能有几种可能的答案和观点 - 这正是我正在寻找的。

感谢您的帮助!

【问题讨论】:

    标签: oauth oauth-2.0 api-design scopes


    【解决方案1】:

    我的 OAuth2 服务器能够创建任意范围。范围类似于“角色”,它们描述了一组功能。

    OAuth2 服务器基本上不知道这些范围是什么。 API 资源服务器接收 Bearer 令牌,并根据承载令牌找出与之关联的范围,并决定用户可以使用该范围做什么和不能做什么,但对于 OAuth2 服务器来说,它们是不透明的字符串。

    我们不使用 swagger/RAML。

    【讨论】:

    • 谢谢 - 那么对于任意范围,您如何将特定 API 函数关联到系统中的给定范围?
    • 不同的资源服务器定义自己的映射。鉴于(对我们而言)范围是一个角色,角色由与其关联的各个权限定义。这是在业务逻辑层中完成的,而不是接近理解 HTTP url 和方法的表面层。某些东西具有 HTTP url、方法、正文和标头这一事实是一个实现细节。
    猜你喜欢
    • 1970-01-01
    • 2018-04-30
    • 1970-01-01
    • 1970-01-01
    • 2013-05-30
    • 2022-01-05
    • 2011-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多