在 Angular 2 中使用集成 Windows 身份验证调用 Web 服务

Calling Web Service using Integrated Windows Authentication in Angular 2

我有两个应用程序。一个是 ASP.NET 核心 Web API REST Web 服务,它是 运行 在 http://localhost:59944 and the other one is an ASP.NET Core application using Angular 2 running at http://localhost:63888/。 我想通过 REST Web 服务加载 JSON 数据。

Exception: Call to Node module failed with error: Response with status: 401 null for URL: 
Microsoft.AspNetCore.NodeServices.HostingModels.HttpNodeInstance+<InvokeExportAsync>d__7.MoveNext()

状态代码 401 似乎是未经授权的异常。

Web API 项目正在使用集成的 Windows 身份验证。 如果我通过浏览器调用 Web API 方法,它工作正常。如果我通过 Angular 2 调用它,我会收到错误消息。

我已经配置 ASP.NET Core 以允许这样的 CORS:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    {
        loggerFactory.AddConsole(Configuration.GetSection("Logging"));
        loggerFactory.AddDebug();

        app.UseCors(builder =>
            builder.WithOrigins("http://localhost:63888"));

        app.UseMvc();
    }

Angular2 中的 web Ssrvice 方法调用如下所示:

this.http.get('http://localhost:59944/api/myWebServiceMethod)
        .map((response: Response) => response.json())
        .subscribe(peopleStatistics => {
           return peopleStatistics;
        }); 

如何进行身份验证? 当使用 Internet Explorer 并直接调用 Web 服务时,我不必输入我的用户名和密码,因为浏览器使用当前登录用户的凭据进行身份验证。是否可以通过 Angular 2 通过 Web 服务调用来执行此操作?我的意思是,是否可以使用 Windows 集成身份验证在用户无需输入用户名和密码的情况下使用 Web 服务?

尝试通过网络电话使用选项

let options = new RequestOptions({ headers: headers, withCredentials: true });

检查 Views\Home\Index.cshtml 并替换:

<app asp-prerender-module="ClientApp/dist/main-server">Loading...</app>

<app asp-ng2-prerender-module="ClientApp/dist/main-server">Loadin‌​g...</app>

或删除 asp-prerender-module(如果不需要):

<app>Loading...</app>