VueJS Windows 针对 ASP.NET Core 5 Docker API 的身份验证未出现

VueJS Windows Authentication against ASP.NET Core 5 Docker API not appearing

设置: 我们已经在 windows 虚拟机(本地)上设置 运行 docker(windows 容器)+ gMSA / 服务帐户 ASP.NET Core 5 API - 在 Kestrel 上使用 .AddAuthentication(NegotiateDefaults.AuthenticationScheme).AddNegotiate();(不是 IIS)在内部 运行ning。它可以很好地验证配置的服务帐户,例如针对 MSSQL 或文件服务器。 如果我打开任何受保护的端点,它会使用我的 windows 凭据或询问我(如果不是在加入域的计算机上)。 windows 用户声明的用户测试端点 return。

这就是 API,效果很好!

问题: “问题”是,我们的 VueJS 应用程序 运行 在 linux 主机上的 docker 容器(linux 容器)中 - 在内部通过 nginx 托管。同一网络。第一次打开 UI 后(没有打开 API)没有身份验证请求发生。有趣的部分是:第一次打开 API 并输入 windows 凭据,然后打开 UI 工作并显示 use/claims(我们 return来自后端)。

在前端,我们使用带有 withCredentials: true 的 axios。

问题: 必须做什么才能使 UI 协商 windows 登录?

向您的容器传递请求的反向代理必须启用 NTLM 支持才能使 Windows 身份验证工作。 IIS 默认支持此功能,但对于其他人,您需要手动激活它。这必须在代理链中重复。

来自docs

Credentials can be persisted across requests on a connection. Negotiate authentication must not be used with proxies unless the proxy maintains a 1:1 connection affinity (a persistent connection) with Kestrel.

查看反向代理的文档: