首页 > 解决方案 > 针对 ASP.NET Core 5 Docker API 的 VueJS Windows 身份验证未出现

问题描述

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

这只是工作正常的 API!

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

在前端,我们使用 axios 和withCredentials: true.

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

标签: dockervue.jsasp.net-coreactive-directorywindows-authentication

解决方案


将请求传递到容器的反向代理必须启用 NTLM 支持,Windows 身份验证才能正常工作。IIS 默认支持这个,但是对于其他的,你需要手动激活它。这必须沿着代理链重复。

文档

凭据可以在连接上的请求之间保持不变。协商身份验证不得与代理一起使用,除非代理与 Kestrel 保持 1:1 连接亲和性(持久连接)。

请参阅您的反向代理的文档:


推荐阅读