我创建了一个.Net Core 2.2 MVC Web应用程序(实体框架和Razor页面)。
该应用程序使用IIS托管在Windows 2016 Server上,属于我们的Windows AD域。
该应用无需使用身份验证或匿名身份验证即可正常运行。
但是,现在,我想以一种方式启用控制器的安全性,以便登录到我们域中其工作站的AD用户可以访问它。
所以我遵循了本教程:
我将启动类设置为在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”
我想念什么?
答案 0 :(得分:1)
这是一个简单的修复程序,我设法通过在下面添加以下两行来使其起作用:
在我的控制器中,我必须像这样添加域:
[Authorize(Roles = "MyDomain\\DevOps")]
在Startup.cs的Configure方法中,我必须添加以下内容:
app.UseAuthentication();