Windows身份验证 - .NET Core Angular应用程序

3
我正在使用Visual Studio 2017构建一个内部网络应用程序,并使用创建带有Angular的.NET Core Web应用程序的模板。由于这是一个内部网络应用程序,我们想要实现Windows身份验证。用户已经登录到网络上,我们不希望他们在访问应用程序时再次输入凭据。
我该如何设置我的Angular应用程序,以便它可以识别已经登录到网络的用户并适当地传递它?我们有一个Web API身份验证API,可以接受此用户ID,并确定用户存在于哪些AD组中,以确定对应用程序的授权。
我具体提出的问题是关于Angular Windows身份验证的。而不是Web API Windows身份验证。而且我特别指出的一点是,我想了解如何将已登录的Windows AD帐户传递到用于授权的服务中,而无需要求用户在登录表单中明确输入其凭据。以下问题没有回答我的问题。如何配置ASP.NET Core应用程序以使用Windows身份验证?

我已经在我的问题中添加了更多细节。如果不清楚,请告诉我。 - avsln
1个回答

1
在客户端,您是否尝试在发送请求之前设置 withCredentials: true?我建议创建一个 Angular 拦截器并在其中设置该属性,以便每个请求都会自动设置。示例代码如下:
import { Injectable } from '@angular/core';
import { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent } from '@angular/common/http';
import { Observable } from 'rxjs';

@Injectable()
export class CustomInterceptor implements HttpInterceptor {
    constructor() { }

    intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
        request = request.clone({
            withCredentials: true
        });

        return next.handle(request);
    }
}

然后在服务器端检查User.Identity,这应该可以获取已登录用户的AD详细信息。

我已经这样做了,在Chrome中不需要输入任何登录详细信息。但似乎在我的Firefox上无法工作,因为第一次必须登录。

希望这可以帮到你。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接