在 public 域上自动 Windows 身份验证?

Automatic Windows Authentication on public domain?

我正在开发一个 Asp.NET 核心 Web 应用程序,我按照 Microsoft 官方指南启用了 Windows 身份验证:

https://docs.microsoft.com/en-us/aspnet/core/security/authentication/windowsauth?view=aspnetcore-2.2&tabs=visual-studio

身份验证有效,但有一件事我不清楚。如果我从 Windows 域中的计算机使用浏览器访问该网站,根据我访问它的方式,我有两种不同的行为:

此时我的问题是:

  1. 有没有办法让浏览器自动登录,即使我 使用 public 域而不是机器名访问? (很明显,我只希望它能自动工作,如果机器 浏览器所在运行登录域)
  2. 如果 第一个问题的答案是否定的,我可以至少配置我的 Asp.NET 核心网络应用程序,以便它记住用户,所以 用户只需登录一次(使用 cookie 或类似机制)? 按照我在上面链接的文章中提供的说明 用户每次关闭时都必须重新输入他的凭据,并且 重新打开浏览器,这不是最方便的。

Windows 身份验证,允许自动登录的身份验证方案,基于属于同一域的所有内容:身份提供者 (AD)、Web 服务器和客户端(本地计算机)。根据定义,public 网站不是域的一部分,因此 Windows Auth(或至少其自动登录功能)无法在这样的环境中运行。

您仍然可以在技术上使用 Windows 一般情况下的 Auth 或 AD。例如,Azure Active Directory 旨在在分布式环境中工作。但是,您必须手动进行身份验证(通过传统的用户名和密码或通过 OAuth 流程)。您无法使用 public 网站自动登录。

编辑

抱歉,我一开始没有仔细阅读您的问题。虽然它不会改变我的答案,但它确实有更多的解释。虽然机器在技术上属于域,但它的外立面是 而不是 。这就是为什么通过主机名访问它有效,但通过实际的 Web 域访问它却不行。就是说,您绝对 疯狂 将您域中的计算机公开给整个 Internet。即使您 可以 让它工作,您打开的漏洞的安全风险远远超过自动登录等简单的细节。您的内部网络应该是 internal,并且您应该立即.

从域中删除这台机器