在 .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 用户可以访问它。
所以我遵循了这个教程:
我将启动 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();
我创建了一个 .Net Core 2.2 MVC 网络应用程序(Entity Framework 和 Razor 页面)。
该应用程序托管在使用 IIS 的 Windows 2016 服务器上,属于我们的 Windows AD 域。
该应用程序在不使用身份验证或匿名身份验证的情况下工作正常。
但是现在,我想为其中一个控制器启用安全性,以便登录到我们域中工作站的 AD 用户可以访问它。
所以我遵循了这个教程:
我将启动 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();