使用托管身份从APIM向Event Hub发送事件返回401未授权如何解决
问题根因与解决方案
核心错误原因
你为APIM托管身份分配的订阅级Contributor角色属于Azure资源管理平面权限,仅支持对Event Hub资源做管理类操作(如创建实例、调整配置等),而向Event Hub发送消息属于数据平面操作,需要单独分配对应的数据平面RBAC权限,这是你返回401未授权的根本原因。
所需补充配置
- 进入你的Event Hub资源(可以选命名空间级别,授权整个命名空间下所有Event Hub的权限;也可以选你正在使用的单个Event Hub实例,做细粒度授权)的「访问控制(IAM)」页面
- 点击「添加角色分配」,在角色列表中选择
Azure Event Hub 数据发送者 - 受分配主体选择你的APIM实例对应的系统分配托管身份,完成配置
- 等待3-5分钟让权限同步后再次测试即可。
可选检查项(非必须,可排除其他异常)
- 你当前策略中托管身份认证的
resource参数https://eventhubs.azure.net配置正确,无需调整 - 确认rewrite路径中的Event Hub名称和你实际的实例名一致,你当前配置的路径对应Event Hub名为
input,如果实例名不一致请修改对应路径 - 确认Event Hub命名空间没有配置IP防火墙、专用链路等网络限制,允许APIM的出站IP访问
内容的提问来源于stack exchange,提问作者Eric Ruder
相关产品推荐
相关产品推荐

