Azure Web 应用 + Node.js + Azure AD = 错误 431

Azure Web App + Node.js + Azure AD = Error 431

我在 Azure Web 应用程序中创建了一个基于 Node.js 的 Web 应用程序,运行,我想将其置于 Azure Active Directory 身份验证之后。激活 "App Service Authentication" 后,登录过程正常,但是在返回到我的应用程序时,它只是 returns 一个 HTTP 431 "Request Header Fields Too Large"。

为了验证它不是我的应用程序,我检查了 Azure Web 应用程序示例 Node.js,甚至这个 returns 在激活 AAD 时也是 431。

重现步骤:

结果:使用浏览器打开 Web 应用程序 URL 时,它将显示登录过程,按照该过程似乎一切正常,AAD returns 到应用程序,但是那时它 returns 一个 HTTP 431。

进一步测试:

有什么想法吗?我错过了什么吗?

这是一个已知问题,因为使用 8KB 硬上限 headers 的较新版本节点存在限制。 EasyAuth 向请求添加了一些非常大的 headers,这可能会导致节点容器拒绝中间件容器发出的带有 400 的请求。在此处阅读更多相关信息: 这可以通过将应用程序设置 WEBSITE_AUTH_DISABLE_IDENTITY_FLOW 设置为 true 来缓解。这将删除我们添加到请求中的最大 header 之一。此 header 通常仅由 .NET Framework 和 Azure Functions 应用程序使用,因此此设置应该是安全的。

如果问题仍然存在,您可以尝试使用 NodeJS 12 版本或增加 header 大小参数:node server.js --max-http-header-size 81000