Angular HTTP 请求中缺少协商令牌
Missing Negotiate token in Angular HTTP requests
我在已部署到 IIS 10 的 .NET Core 项目中包含一个 Angular 5 应用程序。此 UI 使用已部署的 .NET Core API到相同的 IIS 服务器但不同的站点和应用程序池。
登录站点时,系统会提示用户输入域凭据。这是需要的。当站点第一次调用 API 时,系统会再次提示用户输入凭据。这是一个问题,绝不能发生。我需要将第一个身份验证令牌传递给对 API.
的 HTTP 调用
我已设置 IIS 以通过在 API 和 UI 上启用 ASP.NET Impersonation
来处理集成身份验证,但是我可以看到 Negotiate
令牌未被通过 Chrome 开发工具中的 HTTP 请求发送到 API。
在 Angular 中,我创建了一个 HTTP 拦截器,它将凭据附加到所有请求。这是通过以下方式完成的:
request = request.clone({
withCredentials: true
});
然而,这似乎并没有修复丢失的 Negotiate
令牌,我预计会导致用户仍然被提示两次输入凭据。如何防止用户被提示输入凭据两次?
我发现这个问题与跨域有关。在与托管服务相同的域上执行整个身份验证序列时,我没有遇到任何问题。虽然我没有解决实际问题,但 info regarding the solution can be found here.
我在已部署到 IIS 10 的 .NET Core 项目中包含一个 Angular 5 应用程序。此 UI 使用已部署的 .NET Core API到相同的 IIS 服务器但不同的站点和应用程序池。
登录站点时,系统会提示用户输入域凭据。这是需要的。当站点第一次调用 API 时,系统会再次提示用户输入凭据。这是一个问题,绝不能发生。我需要将第一个身份验证令牌传递给对 API.
的 HTTP 调用我已设置 IIS 以通过在 API 和 UI 上启用 ASP.NET Impersonation
来处理集成身份验证,但是我可以看到 Negotiate
令牌未被通过 Chrome 开发工具中的 HTTP 请求发送到 API。
在 Angular 中,我创建了一个 HTTP 拦截器,它将凭据附加到所有请求。这是通过以下方式完成的:
request = request.clone({
withCredentials: true
});
然而,这似乎并没有修复丢失的 Negotiate
令牌,我预计会导致用户仍然被提示两次输入凭据。如何防止用户被提示输入凭据两次?
我发现这个问题与跨域有关。在与托管服务相同的域上执行整个身份验证序列时,我没有遇到任何问题。虽然我没有解决实际问题,但 info regarding the solution can be found here.