我有一个使用多个主机名的 Web 应用程序(请参阅下文以了解为什么这样设置 - 我不希望这分散人们对这里更普遍的问题的注意力)。
基本上有:
- 两个固定主机名(www.domain1.com和www.domain2.com)
- 一个或多个其他主机名不固定,但都共享一个域(abc.domain3.com、def.domain3.com) - 这些是由不受我们控制且不易跟踪的过程动态生成的(请参阅下面的解释)
我们可以假设这些站点都是由同一 Windows 服务器上的 IIS 提供的,并且都是 ASP.NET 站点,但 IIS 中的站点并非都是同一个。它们都针对同一个活动目录使用 Windows 身份验证。
任何给定用户都可能在单个会话过程中访问三个或更多这些主机名。
问题是,对于他们访问的每个新主机名,系统都会重新提示他们输入凭据。
我的理解是,这是浏览器的设计行为 - 当人们访问 FQDN 上的 Windows Auth 站点时,浏览器会提示人们输入凭据 - 但这种情况对于必须重复输入凭据的用户来说非常麻烦。
我还了解到,可以通过浏览器设置来启用“集成 Windows 身份验证”,该身份验证基本上可以直接传递凭据,但这需要修改浏览器设置,这对用户来说要求太高了。
有什么方法可以改善这种情况吗?一个凭证提示就可以了,但三个或更多就太多了。
能够切换到完全不同的身份验证方法(例如 ADFS)的可能性非常低,但如果可以应用某种“层”来促进这一过程,那么这可能是可行的。
就上下文而言,之所以这样设置,是因为这是提供商托管的 SharePoint 应用程序的应用程序模型。基本上,SharePoint 有自己的固定主机名,“应用程序”有自己的固定主机名,并且有一个或多个“应用程序域”,它们基本上充当应用程序和 SharePoint 之间的管道。应用程序域是由 SharePoint 动态生成的,因为应用程序安装在 SharePoint 内的不同子站点中。
我对上述情况的描述有点模糊(“我们可以假设......”)的一个原因是,我有多个客户在他们各自的环境中处理基本相同的问题,并且每个客户都有自己独特的服务器配置。
我问过了这个问题的一个变体在 TechNet 上,但无济于事。