Service Bus异步Webhook调用Windows认证REST API时身份匿名问题咨询
问题分析与结论
这不属于Bug,是Service Bus异步Webhook的设计限制导致的,具体原因如下:
- Service Bus的异步Webhook目前不支持传递Windows身份验证凭据。当你配置使用Windows身份验证的账户发起调用时,Service Bus无法将该账户的NTLM/Kerberos凭据转发到目标REST API,因此请求会以匿名身份发送。
- 目标API仅启用Windows身份验证时,会拒绝未携带有效凭据的匿名请求;只有开启匿名身份验证,才能接收Service Bus发送的无凭据请求,这完全符合当前的功能逻辑。
可行的替代方案
- 使用Azure AD身份验证替代Windows身份验证:将Service Bus和目标API都配置为Azure AD保护,通过Service Bus的托管标识或服务主体发起经过身份验证的请求,确保请求携带有效身份信息。
- 在API端添加API密钥验证:如果无法切换到Azure AD,可以在API中实现API密钥验证机制,配置Service Bus Webhook时在请求头中携带预定义密钥,API端通过校验密钥确认请求合法性。
- 中间层代理:部署一个中间服务,接收Service Bus的匿名Webhook请求,再使用Windows身份验证凭据转发到目标API,在中间层完成身份转换。
内容的提问来源于stack exchange,提问作者Power Mouse
相关产品推荐
相关产品推荐

