如何使用.Net Core授权AD用户

2023-11-26

我正在尝试使用以下方法停止路线上的请求Authorize注释,但我无法让它与 Active Directory 一起使用。有人已经开始工作了吗?

[HttpGet]
[Authorize(Roles = "DOMAIN\\Group A")]
[Route("/")] // GET: /
public IActionResult Index()
{
    return View();
}

注:我也尝试过Authorize(Roles = @"DOMAIN\\Group A")

只是为了提供一些背景知识,我正在运行 Windows、Visual Studio Pro 2015(更新 3)

这是我的project.json 文件中的一些内容:

"dependencies": {
    "Microsoft.AspNetCore.Authorization": "1.0.0",
    "Microsoft.AspNetCore.Mvc": "1.0.0",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
    "Microsoft.Extensions.Configuration.CommandLine": "1.0.0",
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
    "Microsoft.Extensions.Configuration.FileExtensions": "1.0.0",
    "Microsoft.Extensions.Configuration.Json": "1.0.0",
    "Microsoft.Extensions.Logging": "1.0.0",
    "Microsoft.Extensions.Logging.Console": "1.0.0",
    "Microsoft.Extensions.Logging.Debug": "1.0.0",
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
    "Microsoft.NETCore.App": {
      "version": "1.0.0",
      "type": "platform"
    },
    "Swashbuckle.SwaggerGen": "6.0.0-beta901",
    "Swashbuckle.SwaggerUi": "6.0.0-beta901"
  }

您是否已配置 IIS 和应用程序以进行集成身份验证?

在您的 web.config 中,您是否通过设置将 asp.net core 模块设置为转发 Windows 身份forwardWindowsAuthToken="true"

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" 
        modules="AspNetCoreModule" resourceType="Unspecified" />
    </handlers>
    <aspNetCore processPath="%LAUNCHER_PATH%" 
      arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" 
      stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="true" />
  </system.webServer>
</configuration>

在你的program.cs中你是否已经了解了IIS与.UseIISIntegration()?

var host = new WebHostBuilder()
    .UseKestrel()
    .UseContentRoot(Directory.GetCurrentDirectory())
    .UseIISIntegration()
    .UseStartup<Startup>()
    .Build();

您是否在Startup.cs的ConfigureServices()方法中添加了授权并将其放在AddMvc()之前?

public void ConfigureServices(IServiceCollection services)
{
    services.AddAuthorization();
    services.AddMvc();
}

当我完成所有这些事情后,我可以很高兴地根据角色进行授权,例如我把[Authorize(Roles = "REDMOND\\scottgu_org_fte")]在我的家庭控制器上,我就可以正常登录了。

Using @"REDMOND\\scottgu_org_fte"不起作用,因为这使得字符串文字verbatim,所以它试图评估Domain\\group,并且双斜杠是错误的。@"REDMOND\scottgu_org_fte"不过可以。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用.Net Core授权AD用户 的相关文章

随机推荐