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.
查看反向代理的文档:
设置:
我们已经在 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.
查看反向代理的文档: