azure - SPA 调用资源服务器受两个不同的身份提供者保护
问题描述
我们部署了一个 SPA(角度),它针对 azure AD B2C 进行身份验证并检索令牌,然后用于调用一些 REST API。
现在,我被要求调用由另一个 azure AD B2C 保护的其他一些 API(不受我们控制)(同样,不受我们控制)。我认为没有任何方法可以“联合”这两个 AD B2C。
此外,我不知道是否有一种方法可以使用一些隐藏的凭据(假设是在第二个 AD B2C 上定义的技术用户/密码)从 AD B2C 获取访问令牌,出于明显的原因,我不会在 SPA 中使用这些凭据但随后我可以使用经过身份验证的 API 作为代理从第二个 B2C 获取令牌,然后使用获得的令牌调用外部 API。
我是否遗漏了什么,或者我被问到 Azure AD B2C 不可行的事情?
解决方案
我找到的唯一解决方案是让第二个 azure AD B2C 的供应商在他们的 B2C 中声明一个新的应用程序注册,并且:
- 在“证书和机密”下,他们将添加一个新的客户机密(他们将与我们共享,并且需要至少每两年重新创建一次)
- 在“API 权限”下,他们需要指定哪些 API(通过范围)可以使用上面的客户端密码生成的令牌进行访问
然后,我们将调用经过身份验证的 API(使用通过交互式 oauth 流从 B2C 获得的令牌进行保护),并且在我们通过客户端密钥获取令牌后,API 将通过调用其 API 来充当代理。
所有这些都可以通过不同的 API 容器来完成,它们前面有一个 API 网关,以获得更清晰的架构,以便我们的核心 API 与代理 API 分离。
有谁知道更好的解决方案?
推荐阅读
- arrays - 从元组返回数组
- jpa - MapStruct:如何使用映射器使用复合键 JPA 映射视图对象?
- mule - ESL 强制段忽略组件元素分隔符 ISA16 [mulesoft]
- gtk3 - 如何获取 GLib.Settings 的范围
- reactjs - 在 React JS 中动态获取徽章值
- activemq-artemis - 故障转移在静态集群 HA 中不起作用
- logic - 需要获取一个逻辑应用连接器,它可以从消息队列中获取文件路径和文件名
- flutter - 未处理的异常:MissingPluginException
- python - Python Selenium:从 jscontoller 读取数据
- angular - 更新模拟对象会给出未定义的错误