【问题标题】:Web API chains (On-Behalf-Of) in Azure AD B2CAzure AD B2C 中的 Web API 链(代表)
【发布时间】:2018-06-08 10:54:59
【问题描述】:

根据this documentation,B2C不支持代流:

Azure AD B2C 不支持 Web API 链(代表)。

许多架构都包含一个需要调用另一个下游 Web API 的 Web API,两者都由 Azure AD B2C 保护。这种情况在具有 Web API 后端的本机客户端中很常见,后端又调用 Microsoft 在线服务,例如 Azure AD Graph API。

可以通过使用 OAuth 2.0 JWT Bearer Credential 授权(也称为 On-Behalf-Of 流)来支持这种链式 Web API 场景。但是,目前尚未在 Azure AD B2C 中实现 On-Behalf-Of 流。


我不能从第一个 Web API 请求中提取 JWT 并将其传递给下一个 Web API 吗?我知道从技术上讲,我可以,但是有什么我不想这样做的理由吗?

这种方法只有在为同一个 B2C 应用程序配置了两个 Web API 时才有效。也许这就是区别。文档是否可能引用了 2 个独立的 B2C 应用程序?


参考:Access the JWT bearer token when using the JWT middleware in ASP.NET Core

【问题讨论】:

  • 不,您不应该将一个应用用于两个真正的应用。在这种情况下,第一个应用程序(前端)没有限制访问最终资源。代表流量使这成为不可能。前端只能访问一些 web-ap - 并且只有那个 web-api 可以联系最终资源。

标签: oauth-2.0 azure-ad-b2c


【解决方案1】:

OAuth 2.0 On-Behalf-Of流程与第一个资源“https://resourceserver1”相关,从客户端接收访问令牌;然后将此访问令牌交换为另一个访问令牌,以便委托身份访问第二个资源“https://resourceserver2”,无需任何用户交互;然后将该访问令牌发送到第二个资源。

This Azure AD documentation 解释代理流程。

鉴于此,两个不同的资源需要两个不同的应用程序,而这又可能需要两个不同的范围。

您可以在B2C Support for on-behalf-of flow 投票支持此功能。

【讨论】:

  • 嗨,克里斯 - 感谢您的回答。但是这部分呢:“我不能从第一个 Web API 请求中提取 JWT 并将其传递给下一个 Web API 吗?我知道从技术上讲,我可以,但是有什么理由我不想?”
  • 仅供参考,用于投票的链接 Azure 反馈项现在似乎与 OAuth2 客户端凭据流有关(尽管 url 仍然提到代表流?)。我能找到的代表流程投票的最佳现有反馈项目是feedback.azure.com/forums/34192--general-feedback/suggestions/…
  • 你不会想要的,因为 API 不同,并且有不同的安全需求。如果您重复使用 JWT,从安全角度来看,您的所有 API 实际上对于 Azure AD 来说都是同一个。你可以这样做,但你不应该这样做。您应该能够区分您的服务及其范围/权限。就像您没有为项目中的每个类命名 Class1.cs
  • 用户声音的链接不是 100% 正确的。它不适用于代表流程 - 它用于客户凭证流程......
  • 幸运的是现在链接已经失效了。谢谢msft
猜你喜欢
  • 2017-01-04
  • 2017-08-04
  • 2019-05-30
  • 1970-01-01
  • 2016-04-18
  • 2017-09-25
  • 1970-01-01
  • 2018-03-02
  • 1970-01-01
相关资源
最近更新 更多