【问题标题】:Making an OAuth2 call from a Website to an API to another API从网站到 API 到另一个 API 进行 OAuth2 调用
【发布时间】:2017-10-15 12:17:55
【问题描述】:

如果我有一个网站向 API 1 发出请求,它想像这样调用第二个 API 2:

网站 -> API 1 -> API 2

我可以简单地从 API 1 请求中获取 Authorization HTTP 标头的内容并将其传递给 API 2 的请求吗?我的 OAuth2 提供程序是 Azure AD,我正在使用委派权限。

【问题讨论】:

    标签: http oauth-2.0 authorization azure-active-directory


    【解决方案1】:

    您应该遵循“代表”流程来交换您的令牌:

    client = website and resource = API 1 用于令牌

    client = API 1 and Resource = API 2

    阅读更多关于here的信息。

    如果 Web API 需要调用另一个下游 Web API,它可以使用代理流来委派用户的身份,并向第二层 Web API 进行身份验证。

    使用 OAuth 2.0 代表规范草案的委托用户身份

    下面讨论的流程假设用户已在另一个应用程序(例如本机应用程序)上通过身份验证,并且他们的用户身份已用于获取对第一层 Web API 的访问令牌。

    1. 本机应用程序将访问令牌发送到第一层 Web API。
    2. 第一层 Web API 向 Azure AD 的令牌端点发送请求,提供其应用程序 ID 和凭据,以及用户的访问令牌。此外,发送请求时带有 on_behalf_of 参数,指示 Web API 正在请求新令牌以代表原始用户调用下游 Web API。
    3. Azure AD 验证第一层 Web API 是否有权访问第二层 Web API 并验证请求,将 JWT 访问令牌和 JWT 刷新令牌返回给第一层 Web API。
    4. 通过 HTTPS,第一层 Web API 然后通过在请求的授权标头中附加令牌字符串来调用第二层 Web API。只要访问令牌和刷新令牌有效,第一层 Web API 就可以继续调用第二层 Web API。

    可以在here找到集成此流程的示例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-10
      • 2017-05-06
      • 2017-07-21
      • 2021-04-10
      • 1970-01-01
      • 2016-05-19
      • 2021-03-05
      • 1970-01-01
      相关资源
      最近更新 更多