首页 > 解决方案 > 在 Windows 身份验证 IIS 8.5 中拒绝用户

问题描述

我对 .NET 很陌生,我使用 razor 创建了一个简单的 asp.net 核心 Web 应用程序。我在我的 IIS 8.5 中成功发布了它。每次用户想要访问我公司网络中的页面时,我都启用了 Windows 身份验证。但是,我想限制对网络中所有用户的访问,除了少数用户。我尝试按如下方式修改我的 web.config 文件:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
    <security>
      <authorization>
                <remove users="*" roles="" verbs="" />
                <add accessType="Deny" users="*" />
                <add accessType="Allow" users="Alice,Bob" />
      </authorization>
          </security>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath="dotnet" arguments=".\Autentificacion.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
      
    </system.webServer>
  </location>
</configuration>

访问该网站后,系统会要求用户输入他们的 Windows 用户凭据,但网络中的任何用户都可以访问该网站,而不仅仅是 Alice 或 Bob。我需要更改 IIS 配置吗?

标签: c#asp.netasp.net-corerazor-pages

解决方案


您想查看授权策略。

services.AddAuthorization(options =>
        {
            options.AddPolicy("NewPolicy", policy =>
                policy.RequireAssertion(context =>
                    context.User.IsInRole("Some cool user group")));
        });

您想要访问的用户是称为“一些很酷的用户组”的用户组的一部分。

从那里,您可以使用授权属性使用此策略保护您的路由和控制器:

[Authorize(Policy = "NewPolicy")]

进一步阅读: https ://chrissinty.com/securing-your-blazor-apps-configuring-policy-based-authorization-with-blazor/

除非绝对必要,否则我不建议摆弄 IIS web.config。


推荐阅读