azure - 如何使用 Azure B2C 处理多个 API
问题描述
如果需要多个 API,我需要帮助来了解 Azure B2C 如何工作。
我们在这个示例中有: https://api01.azurefunction.com/ https://api02.azurefunction.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 的多次往返都失败了。即使它可以工作,由于可能会显示同意屏幕,因此不能考虑将其用于生产。
在这一点上,我需要建议如何在当前情况下工作。
我有多种选择:
为这些 API 实现外观并提供单点请求数据。但这至少有消耗资源的缺点。B2C 不支持其代表的其他重大限制。因此,我需要发明如何使用传入的安全上下文调用底层 Azure Functions。
使用具有 AD 集成的 API 管理实例,但我们的项目价格如此之高(~2K/月)
使用“hack”为受 AD 保护的 Azure 函数定义“允许的令牌受众”,以允许接受为一个资源获取但发送到另一个资源的令牌。这项工作,但我的范围将受到限制,因为范围列表将由获取令牌的资源定义。作为一种变体,我可以注册“假”应用程序并始终获取该应用程序的令牌。
在 Azure Function 中实现自定义 AccessToken 绑定器并完全发明一个轮子 :(
选项#3 看起来不错。有一些限制,但我希望我能解决这个问题。
但最后,如果我需要与 AD Graph API 等 Azure API 通信,如何获取令牌?使用 RBAC?
请协助解决此问题。
解决方案
推荐阅读
- regex - 我如何编写一个只允许数字和逗号以及字符串开头和结尾的数字的正则表达式?
- ajax - 实现自动完成:为什么在输入任何字符之前调用 AJAX?
- salesforce - Salesforce - 查询以从联结对象和客户中获取数据
- java - 如何使用 IP 地址共享我的数据库?
- javascript - 在输入更改时,获取 div 中的所有输入值并更新标签
- android - 在一台设备上“未安装应用程序”
- azure - 每个数据库、每个帐户或每个 Cosmos Db 订阅的集合是否有任何限制(多少)?
- airflow - 如何在 Airflow 中动态塑造 DAG
- mongodb - 查询以查找在数组中具有额外元素的文档
- facebook - Facebook 登录 - 无法加载 URL:此 URL 的域不包含在应用程序的域中