【问题标题】:Design considerations for OAuth2 secured APIsOAuth2 安全 API 的设计注意事项
【发布时间】:2016-12-26 16:18:06
【问题描述】:

我将给出一个场景作为我的问题的前提:

  • CRM 客户端应用程序
  • 客户 API
  • IDP 保护 API
  • 客户 api 所需范围:“客户”
  • CRM 客户端应用 OAuth2 客户端已授予“客户”范围访问权限
  • CRM 客户端应用程序请求范围为“客户”的令牌,并将 API 与令牌一起使用

在某些时候,开发人员决定是时候将客户 API 中的发票重构为新的发票 API,该 API 现在需要范围“发票”。要让客户 API 将预期结果返回给 CRM 客户端应用程序,它现在必须调用 Invoices API 并将这部分信息发送给调用应用程序。因此,由于新的范围要求,传递令牌将不起作用。

客户 API 保持向 CRM 应用返回预期结果而不破坏要求 CRM 客户端应用添加新范围的变化的最佳方法是什么?

一种方法是让客户 API 将其作为客户端凭据受信任子系统进行身份验证,但发票 API 将如何知道发起用户的信息?这里的想法是在不破坏现有客户端应用程序的情况下分离功能。

【问题讨论】:

    标签: api identityserver3 openid-connect oauth2


    【解决方案1】:

    使用多跳或充当授权系统可以帮助您。如果我理解正确,您的情况是:Client -> API1 -> API2

    如果您希望每一层都有自己的范围(根据您的描述进行),那么act-as tokens 将帮助您。

    IdentityServer samples issue #182 对此进行了很好的总结。您可以在 their Git repository 中找到该场景的示例。

    【讨论】:

    • 您理解正确。但是,如果 API1 收到来自具有客户端凭据流的另一个客户端的请求,那么会发生什么情况,这意味着令牌中没有主题? ActAs 验证不适用于该场景。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-16
    • 1970-01-01
    • 2017-01-14
    • 2014-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多