【问题标题】:.NET Core MVC 5 Windows Authentication.NET Core MVC 5 Windows 身份验证
【发布时间】:2021-06-17 13:46:32
【问题描述】:

我想在我的 .NET Core MVC 5 Web 应用上使用 Windows 身份验证。允许特定域用户和 AD 组。

我在根目录中添加了一个 web.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.web>
    <authentication mode="Windows" />
    <authorization>
      <allow users="mydomain\username1, mydomain\username2" />
      <deny users="?" />
    </authorization>
    <roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider">
      <providers>
        <clear />
        <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
      </providers>
    </roleManager>
  </system.web>
</configuration>

我将此添加到 startup.cs

public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllersWithViews();
            services.AddAuthentication(IISDefaults.AuthenticationScheme);
        }

我在我的控制器中添加了这个

[Authorize(Roles = @"mydomain\ADgroupName")]
[Authorize(Users = @"mydomain\username1")]
public class HomeController : Controller

在项目属性中,我禁用了匿名身份验证并启用了 Windows 身份验证。

我添加了对Microsoft.AspNetCore.Authentication的项目引用。

说完后,我收到错误“找不到类型或命名空间‘用户’”。

我在这里错过了什么?

【问题讨论】:

    标签: asp.net-mvc-5 asp.net-core-mvc


    【解决方案1】:

    错误“找不到类型或命名空间‘用户’”。

    AuthorizeAttribute Class可以看出Authorize属性只有Roles和Policy属性,没有Users属性,所以会报上述错误。

    如果要为指定用户设置授权权限,可以为用户创建一个策略,然后在Controller中设置Authorize属性如下:

     [Authorize(Policy = "policyforUser")]
     public class HomeController : Controller
    

    有关创建策略的更多详细信息,请参见以下链接:

    Policy-based authorization in ASP.NET Core

    ASP.NET Core Authorize AD Groups through web.config

    ASP.NET Core - Authorization Using Windows Authentication

    Using AD groups to authorise access to pages using IIS Windows Authentication

    【讨论】:

    猜你喜欢
    • 2018-11-24
    • 2023-03-22
    • 2019-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-07
    • 2018-06-22
    • 2020-03-04
    相关资源
    最近更新 更多