Passport.js 将 azure-ad 身份验证 link 视为相对的,returns 404 尝试登录

Passport.js treating azure-ad authentication link as relative, returns 404 on attempted login

我们正在使用 passport-azure-ad 来允许我们域中的用户使用他们的 Microsoft AD 凭据登录到内部节点应用程序。我让这个系统以前只使用 1 个节点应用程序工作,但现在我们正在尝试一个新系统,我们在本地有 2 个单独的应用程序 运行 和 PM2,并通过 IIS 在相同的 URL 下为它们提供服务,但是你像这样访问每个应用程序: 我的网站。com/app1我的网站。com/app2

只有第二个应用程序需要身份验证。我 运行 遇到的问题是当您点击登录时,passport.authenticate 方法似乎试图重定向到相对授权 link: mywebsite.com/{租户}/oauth2/v2.0/authorize ,而不是实际的授权端点是: https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize

有谁知道这可能是为什么以及我可以做些什么来阻止 passport 像亲戚一样对待 auth 端点 link?这会导致每次用户点击 /login 时出现 404,因为 /{tenant}/oauth2/v2.0/authorize 路由不存在。

愿日后发现此问题的任何人安息。

对我来说,解决方案如下:

  • 打开 IIS 和 select 您的服务器(不是站点),然后在 IIS 下打开 Application Request Routing Cache
  • 在最右侧的“操作”窗格中,select 服务器代理设置... 代理下
  • 取消选中 反向重写主机以响应 headers 代理设置下的复选框,并确保点击右窗格中的应用!
  • 重要的是要注意我还必须更新我的入口点 app.js 以使用扩展 url 编码:app.use(express.urlencoded({ extended: true }));,以及更新您的身份验证路由中的重定向 URL . Azure 还需要知道您的重定向 URI。