gpt4 book ai didi

具有 oauth 的 Azure 应用程序网关删除 token

转载 作者:行者123 更新时间:2023-12-02 22:53:04 27 4
gpt4 key购买 nike

我们目前正在努力解决我们的 azure 环境中的一个问题。在我们当前的设置中,我们有一个连接到 2 个应用程序服务的应用程序网关。

  • 1 个应用服务正在使用基本身份验证。这里没有任何问题,并且按预期工作。
  • 第二个应用服务将 OAUTH 与外部身份服务器结合使用。通过网关连接此应用服务时,所有调用都会导致 401 未经授权错误。

我们环境的快速草图: Azure sketch

我们调查了 azure 中对该服务的调用,并发现以下内容:首先使用 Good token 重定向到网关: enter image description here其次是导致 401 错误的调用。正如你所看到的,这个调用不再有 token : enter image description here

如果我们不通过网关,我们就可以使用相同的 token 连接到服务。当我们通过网关时,我们会收到未经授权的错误。

应用程序网关设置如下:一个监听器和 2 个具有路径规则的后端池。所有使用/service1/* 的调用都将转到第一个应用服务,而使用/service2/* 的调用将转到第二个应用服务。

有人知道身份验证失败的原因以及如何解决此问题吗?如果需要更多信息,请询问我提前致谢。

最佳答案

必须解决这个问题并找到解决方法。事件的顺序似乎是这样的:

  1. AG Get 的请求
  2. AG 解析请求并存储部分包含请求 header 的字典
  3. AG 决定丢弃授权 header ,因为它很愚蠢
  4. AG 最终运行重写规则
  5. ...
  6. 利润!

所以,您实际上可以访问授权 header ,您只需要偷偷摸摸地对待它即可。我所做的是添加 2 条重写规则来恢复它:

优先级 99:将 X-Auth-Token 设置为 {http_req_authorization}

优先级 100:将授权设置为 {http_req_x_auth_token}

这使授权 token 重新发挥作用。确保设置优先级,以便它们按此顺序运行,否则当然无法工作。请注意,尝试执行仅将授权设置为 {http_req_authorization} 的规则似乎被视为无操作,并且会被跳过。因此,我在其中创建了临时 X-Auth-Token header 。

关于具有 oauth 的 Azure 应用程序网关删除 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55472541/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com