在 .Net Core 2.x MVC 应用程序中配置 windows AD 身份验证

configuring windows AD authentication in .Net Core 2.x MVC app

我创建了一个 .Net Core 2.2 MVC 网络应用程序(Entity Framework 和 Razor 页面)。

该应用程序托管在使用 IIS 的 Windows 2016 服务器上,属于我们的 Windows AD 域。

该应用程序在不使用身份验证或匿名身份验证的情况下工作正常。

但是现在,我想为其中一个控制器启用安全性,以便登录到我们域中工作站的 AD 用户可以访问它。

所以我遵循了这个教程:

https://docs.microsoft.com/en-us/aspnet/core/security/authentication/windowsauth?view=aspnetcore-2.2&tabs=visual-studio#server-side-configuration-with-the-iis-manager

我将启动 class 设置为在 ConfigureServices 中包含所需的条目:

Startup.cs:

using Microsoft.AspNetCore.Server.IISIntegration;

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

这是我想要锁定的具有一种方法的控制器:

ResearchController.cs:

using Microsoft.AspNetCore.Authorization;


public class SecuredOptionsController : Controller
{
    [Authorize(Roles = "FrankJ, AliceR")]
    [HttpPost]
    public async Task<IActionResult> AccessSecretData(DateTime? start, DateTime? end)
    {
        return View();
    }
}

我只希望两个域用户能够访问这个: 我在 Windows 服务器的用户帐户部分添加了 FrankJ 和 AliceR AD 域帐户。

当我点击那个控制器时,会出现一个登录提示,但是当我输入 FrankJ 或 AliceR 的凭据时它永远不会工作。我试过只使用 'FrankJ' 我试过 'TheDomain/FrankJ'

我错过了什么?

这是一个简单的修复,我通过在下面添加这两行来设法让它工作:

在我的控制器中,我必须像这样添加域:

 [Authorize(Roles = "MyDomain\DevOps")]

并且在 Startup.cs 的 Configure 方法中,我必须添加:

app.UseAuthentication();