Asp.net core 使用asp.net内核的Windows身份验证

Asp.net core 使用asp.net内核的Windows身份验证,asp.net-core,.net-core,Asp.net Core,.net Core,请提供有关如何在ASP.NET Core RC2+上实施Windows身份验证的指导 我看到了其他一些描述承载身份验证的问题,比如 但这不是我想要的。您可以使用WebListener来实现这一点,如下所示: 打开project.json并将WebListener添加到依赖项: "dependencies" : { ... "Microsoft.AspNetCore.Server.WebListener": "0.1.0-rc2-final" ... } 将WebListener添

请提供有关如何在ASP.NET Core RC2+上实施Windows身份验证的指导

我看到了其他一些描述承载身份验证的问题,比如


但这不是我想要的。

您可以使用WebListener来实现这一点,如下所示:

  • 打开project.json并将WebListener添加到依赖项:

    "dependencies" : {
      ...
      "Microsoft.AspNetCore.Server.WebListener": "0.1.0-rc2-final"
      ...
    }
    
  • 将WebListener添加到命令(同样在Project.json中)

  • 在Startup.cs中,指定WebHostBuilder将WebListener与NTLM一起使用

     var host = new WebHostBuilder()
            // Some configuration
            .UseWebListener(options => options.Listener.AuthenticationManager.AuthenticationSchemes = AuthenticationSchemes.NTLM)
            // Also UseUrls() is mandatory if no configuration is used
            .Build();
    

  • 就这样

    这在.Net Core 1.0.0(RTM)中似乎不再有效。我完全按照Ivan Prodanov的回答做WebHostBuilder;它运行时,不会出现错误,但HttpContext.User未标记WindowsIdentity。以下代码用于在ASP.Net 5 beta6中工作:

    在project.json中:

    "version": "1.0.0"
    "dependencies": {
      "Microsoft.AspNetCore.Owin": "1.0.0",
      "Microsoft.AspNetCore.Server.WebListener": "0.1.0",
    
    在中间件类中:

    public async Task Invoke(HttpContext context)
    {
        try
        {
            ClaimsPrincipal principal = context.User;
    
    // <-- get invalidcastexception here:
            WindowsIdentity winIdentity = (WindowsIdentity)principal.Identity;  
    
            ....
            ....
    
    公共异步任务调用(HttpContext上下文)
    {
    尝试
    {
    ClaimsPrincipal principal=context.User;
    
    //检查launchSettings.json文件-将匿名身份验证更改为false

      "iisSettings": {
        "windowsAuthentication": true,
        "anonymousAuthentication": false,
    

    要部署到iis,请选中此项

    您的意思是使用NTLM自动登录域用户吗?然后您需要使用iis以及iis提供的功能,并在创建新应用程序时选择“Windows身份验证”模板。如果您的意思是让表单登录(即使用标识),则没有现成的方法来完成此操作,您需要为其编写自己的身份验证。出于安全原因,默认情况下不会实现。谢谢。我花了很长时间寻找解决方案,结果是一个简单的
    HttpContext.User.Identity.Name
    在ASP.NET 4中仍能正常工作吗r像Mac和Linux这样的平台??没有。目前IIS和WebListener都只能在Windows上托管.NET核心应用程序。请查看下面的链接,以获取ASP.NET团队的官方文档。是否支持Kerberos?或者更好的是,验证方案。协商?@IvanProdanov,可以为我澄清一些事情吗?文章说“WebListener不能与IIS或IIS Express一起使用…WebListener对于需要在不使用IIS的情况下将服务器直接暴露到Internet的部署非常有用。”这是否意味着a)您使用IIS(这需要使用forwardWindowsAuthToken=“true”属性创建web.config,这是使Windows Auth正常工作的唯一方法),或b)您使用WebListener而不是IIS?@jamestomey您是否找到了此问题的答案James?您是否可以尝试添加
    “Microsoft.AspNetCore.Server.IISIntegration”:“1.0.0”
    在您的Dependencies中,在v0.1.0中是options.Listener.AuthenticationManager.AuthenticationSchemes,已重命名为options.ListenerSettings.Authentication.Schemes。您现在还必须添加。AllowAnonymous=False切换到@TimothyKlenke提到的内容,我收到的“WebListenerOptions”不包含“ListenerSettings”
      "iisSettings": {
        "windowsAuthentication": true,
        "anonymousAuthentication": false,