【问题标题】:Azure Web App (Linux - Node v12 LTS) - 403 Request Header Too LongAzure Web App (Linux - Node v12 LTS) - 403 请求标头太长
【发布时间】:2021-01-17 17:32:56
【问题描述】:

目前不知道该转向何处。我们正处于开发应用程序的最后阶段,该应用程序托管在基于 Linux 的 NodeJS v12 Azure Web 应用程序中。

我们的应用程序连接到 Azure AD B2C 以存储和管理用户帐户。 AD B2C 完全使用自定义策略进行配置。

当我们尝试通过 B2C 更改帐户密码时,我们成功地进行了密码更改,但 B2C 尝试将我们重定向回我们的网站,但失败并显示 431。

Referer 非常长,看起来像这样:https://%ADTenant%.b2clogin.com/%ADTenant%.onmicrosoft.com/%CustomPolicyName%/api/SelfAsserted/confirmed?csrf_token=%Token%&tk=StateProperties=%Token%&p=%CustomPolicyName%?diags=%ListOfEncodedClaimsAndControlInformation%

经过编码,整个内容的长度约为 1,800-1,900 个字符。我们的 cookie 中还有大约 1,000-1,100 个字符,目标 URL 的长度约为 1,300 个字符,总共有大约 4.1-4.3k 个字符。

如果我们重新加载页面,referer 将变为空,因此调用正常。 奇怪的是,在隐身模式下,问题不会出现。 Referer 为空,并且工作正常。

起初我们以为是 NodeJS 最大 8KB 请求标头大小,但我们的请求标头在此之下。它在本地工作;仅当应用位于 Azure Web 应用中时才会中断,因此更难排除故障。

我们甚至将WEBSITE_AUTH_DISABLE_IDENTITY_FLOW=true 添加到我们的网络应用程序中:不走运

如果有人有想法,那就太棒了,因为我们在这里的想法很有限:( 谢谢!

【问题讨论】:

    标签: node.js azure azure-web-app-service azure-ad-b2c http-status-code-403


    【解决方案1】:

    我想你可以尝试使用–max-http-header-size arg 作为节点。

    【讨论】:

    • 我们已经尝试过了,但它似乎不起作用。我们已经使用该论点将最大标头大小减小到低得离谱的值,在我们的本地环境中它应该已经被破坏了,它仍然会成立:/
    • Hmm.. 就我而言,工作正常,但我选择 Azure Web Apps (Windows),我的 web.config 包含如下参数:
    • 是的,我们使用的是 Linux,我们确实尝试将启动命令更改为 node server/server.js --max-http-header-size 80000,但这并没有解决我们的问题 :(
    • 我们后来也注意到,这个问题只有在我们已经登录用户帐户时才会发生,因为它带有会话 cookie。如果用户注销并重置其密码(与更改密码相同的后端进程和策略),则不会发生错误,因为会话 cookie 不存在。
    猜你喜欢
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 2018-10-06
    • 1970-01-01
    • 1970-01-01
    • 2019-03-17
    • 2018-02-16
    • 2021-07-20
    相关资源
    最近更新 更多