首页 > 解决方案 > SPA 调用资源服务器受两个不同的身份提供者保护

问题描述

我们部署了一个 SPA(角度),它针对 azure AD B2C 进行身份验证并检索令牌,然后用于调用一些 REST API。

现在,我被要求调用由另一个 azure AD B2C 保护的其他一些 API(不受我们控制)(同样,不受我们控制)。我认为没有任何方法可以“联合”这两个 AD B2C。

此外,我不知道是否有一种方法可以使用一些隐藏的凭据(假设是在第二个 AD B2C 上定义的技术用户/密码)从 AD B2C 获取访问令牌,出于明显的原因,我不会在 SPA 中使用这些凭据但随后我可以使用经过身份验证的 API 作为代理从第二个 B2C 获取令牌,然后使用获得的令牌调用外部 API。

我是否遗漏了什么,或者我被问到 Azure AD B2C 不可行的事情?

标签: azureauthenticationoauth-2.0azure-ad-b2cbearer-token

解决方案


我找到的唯一解决方案是让第二个 azure AD B2C 的供应商在他们的 B2C 中声明一个新的应用程序注册,并且:

  • 在“证书和机密”下,他们将添加一个新的客户机密(他们将与我们共享,并且需要至少每两年重新创建一次)
  • 在“API 权限”下,他们需要指定哪些 API(通过范围)可以使用上面的客户端密码生成的令牌进行访问

然后,我们将调用经过身份验证的 API(使用通过交互式 oauth 流从 B2C 获得的令牌进行保护),并且在我们通过客户端密钥获取令牌后,API 将通过调用其 API 来充当代理。

所有这些都可以通过不同的 API 容器来完成,它们前面有一个 API 网关,以获得更清晰的架构,以便我们的核心 API 与代理 API 分离。

有谁知道更好的解决方案?


推荐阅读