You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Azure Application Proxy调用需双重Bearer授权的本地OAuth API

解决Azure应用代理与本地OAuth API的双重认证头冲突问题

我之前碰到过一模一样的场景:本地有个用OAuth认证的API,本地调用时必须带Authorization: Bearer ...头,现在要通过带认证的Azure应用代理(AAP)从外部访问它。但HTTP协议不允许同一个请求里有两个Authorization: Bearer头——一个给AAP做身份验证,一个给本地API用,这确实是个棘手的问题,而且官方好像也没给出直接的解决方案。

我自己实现的临时可行方案

我搭了一个本地中间代理(On-Premise Proxy),放在AAP和真实本地API之间,专门处理认证头的转换,具体流程是这样的:

  • 外部客户端发请求时,携带两个请求头:
    • Authorization: Bearer <AAP_AUTH_TOKEN>:给Azure应用代理做身份验证用
    • AuthorizationOnPrem: Bearer <LOCAL_API_AUTH_TOKEN>:自定义头,存本地API需要的认证Token
  • Azure应用代理验证通过后,把请求转发到这个本地中间代理
  • 中间代理做两个关键操作:
    1. 移除原有的Authorization头(AAP的验证已经完成,这个头没用了)
    2. 将AuthorizationOnPrem头的内容复制到Authorization头里
  • 最后中间代理把修改后的请求转发给真实的本地API,完成调用

这个方案的好处是实现简单、快速见效,在我的业务场景里完全能跑通,但缺点也很明显——扩展性差,如果后续要加更多认证逻辑或者处理其他头,得不断改代理的代码。

可以参考的优化方向

如果之后要做更规范的扩展,有两个思路:

  • 把中间代理的逻辑迁移到成熟的API网关(比如Kong、APISIX)里,用网关的插件系统来处理头转换,比自己写的小代理更稳定、易维护
  • 如果有权限修改本地API的话,直接让本地API支持从自定义头(比如AuthorizationOnPrem)读取认证Token,这样就不需要中间代理了,AAP直接转发请求,本地API从自定义头取Token即可,这是更简洁的方案

内容的提问来源于stack exchange,提问作者Steeve G

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 09:07:43