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

时间:2019-05-03 17:41:30

标签: active-directory asp.net-core-2.0 windows-authentication

我创建了一个.Net Core 2.2 MVC Web应用程序(实体框架和Razor页面)。

该应用程序使用IIS托管在Windows 2016 Server上,属于我们的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

我将启动类设置为在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 Server的“用户帐户”部分中添加了FrankJ和AliceR AD域帐户。

当我按下该控制器时,确实会出现一个登录提示,但是当我输入FrankJ或AliceR的凭据时,它永远不会起作用。我已经尝试过仅使用“ FrankJ”,并且尝试过“ TheDomain / FrankJ”

我想念什么?

1 个答案:

答案 0 :(得分:1)

这是一个简单的修复程序,我设法通过在下面添加以下两行来使其起作用:

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

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

在Startup.cs的Configure方法中,我必须添加以下内容:

app.UseAuthentication();