首页 > 解决方案 > 如何使用 Azure B2C 处理多个 API

问题描述

如果需要多个 API,我需要帮助来了解 Azure B2C 如何工作。

我们在这个示例中有: https://api01.azurefunction.com/ https://api02.azurefunction.com/

https://app.azuresites.com/

B2C 实例示例.onmicrosoft.com

API01 公开范围: https ://samples.onmicrosoft.com/api01/read

API02 公开范围: https ://samples.onmicrosoft.com/api02/write

WebApp 使用 MSAL.NET (Microsoft.Identity.Client 4.9.0) 并且只能为一个 API 请求范围。任何为两种不同资源请求范围的尝试都将失败,如果使用 ConfidentialClientApplicationBuilder,它会在 AD/B2C 中受到限制。

我尝试通过请求范围来启动到 STS 的多次往返都失败了。即使它可以工作,由于可能会显示同意屏幕,因此不能考虑将其用于生产。

在这一点上,我需要建议如何在当前情况下工作。

我有多种选择:

  1. 为这些 API 实现外观并提供单点请求数据。但这至少有消耗资源的缺点。B2C 不支持其代表的其他重大限制。因此,我需要发明如何使用传入的安全上下文调用底层 Azure Functions。

  2. 使用具有 AD 集成的 API 管理实例,但我们的项目价格如此之高(~2K/月)

  3. 使用“hack”为受 AD 保护的 Azure 函数定义“允许的令牌受众”,以允许接受为一个资源获取但发送到另一个资源的令牌。这项工作,但我的范围将受到限制,因为范围列表将由获取令牌的资源定义。作为一种变体,我可以注册“假”应用程序并始终获取该应用程序的令牌。

  4. 在 Azure Function 中实现自定义 AccessToken 绑定器并完全发明一个轮子 :(

选项#3 看起来不错。有一些限制,但我希望我能解决这个问题。

但最后,如果我需要与 AD Graph API 等 Azure API 通信,如何获取令牌?使用 RBAC?

请协助解决此问题。

标签: azureazure-ad-b2cazure-rbac

解决方案


推荐阅读