【发布时间】:2022-04-13 03:40:52
【问题描述】:
我有几个 .NET 5.0 Blazor 应用程序部署到 Windows Server 上的 IIS 10 以用于 Intranet 流量。这些应用程序启用了 Windows 身份验证,并允许用户使用他们的 Windows 凭据查看站点,这些凭据将自动传递到 Blazor 站点(即,它可以向他们显示他们的域帐户信息)。最近,在不更改 IIS 上的任何内容或与任何配置相关的情况下,这些网站开始要求用户手动输入他们的 Windows 凭据,这不应该发生。
我创建了一个新的 Blazor 应用并将搭建的应用部署到 IIS,这不需要输入 Windows 凭据。然后,我还将现有代码迁移到脚手架应用程序以测试可能的根本原因,并不断将更改逐步部署到 IIS。我最终将整个代码库移到了脚手架应用程序中,它仍然可以在不需要凭据的情况下工作。我们的应用程序部署在默认网站下,因此我删除了旧应用程序并创建了一个新应用程序,它再次开始要求提供凭据。
有人知道这可能是什么原因吗?
- 为项目启用了 Windows 身份验证。
- 在 IIS 上启用了 Windows 身份验证
services.AddRazorPages();
services.AddServerSideBlazor();
services.AddSignalR(e => {
e.MaximumReceiveMessageSize = 65536;
});
services.AddAuthentication(IISDefaults.AuthenticationScheme);
services.AddAuthorization();
...
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
【问题讨论】:
-
“网站开始要求用户手动输入他们的 Windows 凭据”,您的意思是 Web 浏览器提示输入凭据吗?什么类型的浏览器?请记住,这是您在此类问题中绝不能错过的关键信息。
-
在 IIS 中确认禁用匿名身份验证。
-
匿名身份验证已禁用。是的,我的意思是它提示输入凭据。正常使用的是 Chrome,但我也使用 Edge 进行了测试(我之前从未使用 Edge 访问过该站点,所以这不会是缓存问题)。我还在另一台计算机上进行了测试,我以前从未访问过该站点或服务器,但它仍然提示输入凭据。
-
文件夹的权限是否正确?如果没有,这可能会导致凭据提示,因为 Windows 凭据没有权限
-
设置了权限,以便 IIS_IUSRS 需要访问文件夹以提供内容。如果该用户无权访问,则当您尝试访问该站点时 IIS 会抛出错误。所以访问是存在的。另外,我是管理员,所以默认情况下我对文件夹拥有更高的访问权限。