2017-08-25 340 views
0

當與運行角:DOTNET運行 - 角 - Windows身份驗證 - 未通過身份驗證

NG服務--proxy-配置proxy.config.js

和.NET的核心有:

DOTNET運行

Windows身份驗證內華達州呃認證用戶。

但是,當從Visual Studio F5用戶運行應用程序進行身份驗證時,(相同的端口和所有內容)。

proxy.config.js

const Agent = require('agentkeepalive'); 

module.exports = { 
     '/api': { 
      target: 'http://localhost:5000', 
      secure: false, 
      agent: new Agent({ 
       maxSockets: 100, 
       keepAlive: true, 
       maxFreeSockets: 10, 
       keepAliveMsecs: 100000, 
       timeout: 6000000, 
       keepAliveTimeout: 90000 
      }), 
      onProxyRes: proxyRes => { 
       let key = 'www-authenticate'; 
       proxyRes.headers[key] = proxyRes.headers[key] && 
        proxyRes.headers[key].split(','); 
      } 
     } 
}; 

iisSettings

iisSettings": { 
    "windowsAuthentication": true, 
    "anonymousAuthentication": false, 
    "iisExpress": { 
     "applicationUrl": "http://localhost:5000/", 
     "sslPort": 0 
    } 
    } 

Startup.cs

public class Startup 
    { 
     public Startup(IConfiguration configuration) 
     { 
      Configuration = configuration; 
     } 

     public IConfiguration Configuration { get; } 

     public void ConfigureServices(IServiceCollection services) 
     { 
      services.AddAuthentication(IISDefaults.AuthenticationScheme); 

      services.AddMvc(config => 
      { 
       var policy = new AuthorizationPolicyBuilder() 
        .RequireAuthenticatedUser() 
        .Build(); 
       config.Filters.Add(new AuthorizeFilter(policy)); 
      }); 

      services.AddMvc(); 
     } 

     public void Configure(IApplicationBuilder app, IHostingEnvironment env) 
     { 
      app.Use(async (context, next) => 
      { 
       await next(); 
       if (context.Response.StatusCode == 404 && 
        !Path.HasExtension(context.Request.Path.Value) && 
        !context.Request.Path.Value.StartsWith("/api/")) 
       { 
        context.Request.Path = "/index.html"; 
        await next(); 
       } 
      }); 

      app.UseMvcWithDefaultRoute(); 

      app.UseDefaultFiles(); 

      app.UseStaticFiles(); 
     } 
    } 

這是爲什麼點網絡運行和dotnet手錶運行不適用於Windows身份驗證,但Visual Studio F5呢?

更新

我曾嘗試加入「weblistener」,而不是在項目屬性中啓用身份驗證。加入weblistener後,我能夠用dotnet的運行來驗證,但我再也不能開始使用VS F5出於某種原因調試...

.UseHttpSys(options => 
      { 
       options.Authentication.Schemes = AuthenticationSchemes.NTLM; 
       options.Authentication.AllowAnonymous = false; 
      }) 

回答

0

Windows身份驗證不DOTNET CLI支持。

我不知道如果你在IIS中發佈你的應用程序(沒有httpsys或weblistener)(不支持在IIS中),你應該如何在本地開發。

我目前正在使用IIS Express,這是一個痛苦的屁股。

Source

0

如果不久:dotnet run啓動應用程序,而無需使用IIS作爲反向代理等所有IIS設置都將被忽略


你,你只有當您運行從Visual Studio應用程序iisSettings部分用於launchSettings.json

這個json文件保存了與每個調試配置文件相關的項目特定設置,Visual Studio被配置爲用來啓動應用程序,包括應該使用的任何環境變量。

當您執行dotnet run命令時,the Web Server (Kestrel by default) starts and hosts the app

當您從VS啓動應用程序時,IIS Express實例也被配置爲您的應用程序的反向代理。這是啓用Windows身份驗證。

查看IIS Publishing瞭解如何配置IIS + ASP.NET Core應用程序的詳細信息。如果你不使用HTTPSYSWeblistener,(weblistener在2.0 httpsys更換?)

沒有窗戶,沒有Windows身份驗證

+0

據我瞭解,我必須使用WebListener或IIS +紅隼對於Windows身份驗證。我試過weblistener但是不會允許我使用iis進行調試?另外我無法找到dotnet run + iis的解決方案。你知道爲什麼我不能使用weblistener進行調試,並且你有一個適用於iis和dotnet的解決方案嗎? – Reft

+0

@Reft是,可以爲IIS Core或WebListener託管的ASP.NET Core應用程序配置Windows身份驗證。而WebListener不能與IIS或IIS Express一起使用,因爲它與ASP.NET核心模塊不兼容。查看[在ASP.NET Core中配置Windows身份驗證](https://docs.microsoft.com/zh-cn/aspnet/core/security/authentication/windowsauth) - 您可以配置IIS站點,而不是使用VS + IIS Express – Set

+0

對不起,但這並沒有幫助我。一旦應用程序部署完畢,Windows身份驗證就會像應該那樣工作。問題是當我在當地發展。該應用程序託管在iis,所以我想開發使用iis express和dotnet cli。我不想在localhost中使用httpsys。使用dotnet cli阻止我使用iis express?我是否被迫使用visual studio而不是dotnet watch run? – Reft

相關問題