gpt4 book ai didi

node.js - Azure Web 应用程序 + Node.js + Azure AD = 错误 431

转载 作者:行者123 更新时间:2023-12-03 12:10:46 26 4
gpt4 key购买 nike

我创建了一个基于 Node.js 的 Web 应用程序,在 Azure Web 应用程序中运行,我想将其置于 Azure Active Directory 身份验证之后。激活“应用程序服务身份验证”后,登录过程正常工作,但是返回到我的应用程序后,它只返回 HTTP 431“请求 header 字段太大”。

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

重现步骤:

  • 创建新的 Azure 资源 -> Web 应用程序
    • 选择任何基于 Node 的运行时堆栈,例如 Node 12 LTS
    • 选择任意操作系统
    • 创建网络应用并等待部署完成
  • 创建一个简单的网络应用程序
  • 在网络应用设置中,转到“身份验证/授权”
    • 将“应用服务身份验证”设为“开启”
    • 选择 Azure Active Directory
    • 选择快速管理模式并在此过程中创建新的 Azure AD 应用
    • 在“请求未经身份验证时采取的操作”中,选择“使用 Azure AD 登录”
    • 确认

结果:当使用浏览器打开 Web 应用程序 URL 时,它将显示登录过程,按照该过程,一切似乎都工作正常,并且 AAD 返回到应用程序,但此时它返回 HTTP 431。

进一步测试:

  • 停用身份验证,一切恢复正常
  • 上传一个简单的 .html 文件而不是 Node 应用程序在启用身份验证的情况下可以正常工作
  • 使用 Restify 和 http 进行测试

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

最佳答案

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

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

关于node.js - Azure Web 应用程序 + Node.js + Azure AD = 错误 431,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61059648/

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