在 public 域上自动 Windows 身份验证?
Automatic Windows Authentication on public domain?
我正在开发一个 Asp.NET 核心 Web 应用程序,我按照 Microsoft 官方指南启用了 Windows 身份验证:
身份验证有效,但有一件事我不清楚。如果我从 Windows 域中的计算机使用浏览器访问该网站,根据我访问它的方式,我有两种不同的行为:
- 如果我使用地址中的机器名称访问(例如:https://devmachine01/),浏览器会自动登录并通过身份验证,无需用户执行任何操作
- 如果我使用机器的 public 域名访问(示例:https://mypublicwebsite.com),浏览器会要求我输入我的 windows 凭据,如下图所示:
此时我的问题是:
- 有没有办法让浏览器自动登录,即使我
使用 public 域而不是机器名访问?
(很明显,我只希望它能自动工作,如果机器
浏览器所在运行登录域)
- 如果
第一个问题的答案是否定的,我可以至少配置我的
Asp.NET 核心网络应用程序,以便它记住用户,所以
用户只需登录一次(使用 cookie 或类似机制)?
按照我在上面链接的文章中提供的说明
用户每次关闭时都必须重新输入他的凭据,并且
重新打开浏览器,这不是最方便的。
Windows 身份验证,允许自动登录的身份验证方案,基于属于同一域的所有内容:身份提供者 (AD)、Web 服务器和客户端(本地计算机)。根据定义,public 网站不是域的一部分,因此 Windows Auth(或至少其自动登录功能)无法在这样的环境中运行。
您仍然可以在技术上使用 Windows 一般情况下的 Auth 或 AD。例如,Azure Active Directory 旨在在分布式环境中工作。但是,您必须手动进行身份验证(通过传统的用户名和密码或通过 OAuth 流程)。您无法使用 public 网站自动登录。
编辑
抱歉,我一开始没有仔细阅读您的问题。虽然它不会改变我的答案,但它确实有更多的解释。虽然机器在技术上属于域,但它的外立面是 而不是 。这就是为什么通过主机名访问它有效,但通过实际的 Web 域访问它却不行。就是说,您绝对 疯狂 将您域中的计算机公开给整个 Internet。即使您 可以 让它工作,您打开的漏洞的安全风险远远超过自动登录等简单的细节。您的内部网络应该是 internal,并且您应该立即.
从域中删除这台机器
我正在开发一个 Asp.NET 核心 Web 应用程序,我按照 Microsoft 官方指南启用了 Windows 身份验证:
身份验证有效,但有一件事我不清楚。如果我从 Windows 域中的计算机使用浏览器访问该网站,根据我访问它的方式,我有两种不同的行为:
- 如果我使用地址中的机器名称访问(例如:https://devmachine01/),浏览器会自动登录并通过身份验证,无需用户执行任何操作
- 如果我使用机器的 public 域名访问(示例:https://mypublicwebsite.com),浏览器会要求我输入我的 windows 凭据,如下图所示:
此时我的问题是:
- 有没有办法让浏览器自动登录,即使我 使用 public 域而不是机器名访问? (很明显,我只希望它能自动工作,如果机器 浏览器所在运行登录域)
- 如果 第一个问题的答案是否定的,我可以至少配置我的 Asp.NET 核心网络应用程序,以便它记住用户,所以 用户只需登录一次(使用 cookie 或类似机制)? 按照我在上面链接的文章中提供的说明 用户每次关闭时都必须重新输入他的凭据,并且 重新打开浏览器,这不是最方便的。
Windows 身份验证,允许自动登录的身份验证方案,基于属于同一域的所有内容:身份提供者 (AD)、Web 服务器和客户端(本地计算机)。根据定义,public 网站不是域的一部分,因此 Windows Auth(或至少其自动登录功能)无法在这样的环境中运行。
您仍然可以在技术上使用 Windows 一般情况下的 Auth 或 AD。例如,Azure Active Directory 旨在在分布式环境中工作。但是,您必须手动进行身份验证(通过传统的用户名和密码或通过 OAuth 流程)。您无法使用 public 网站自动登录。
编辑
抱歉,我一开始没有仔细阅读您的问题。虽然它不会改变我的答案,但它确实有更多的解释。虽然机器在技术上属于域,但它的外立面是 而不是 。这就是为什么通过主机名访问它有效,但通过实际的 Web 域访问它却不行。就是说,您绝对 疯狂 将您域中的计算机公开给整个 Internet。即使您 可以 让它工作,您打开的漏洞的安全风险远远超过自动登录等简单的细节。您的内部网络应该是 internal,并且您应该立即.
从域中删除这台机器