CredentialCache.DefaultCredentials 不遵守 dotnet core 2.2 的 IIS 应用程序池凭据
CredentialCache.DefaultCredentials isn't respecting IIS App Pool Credentials with dotnet core 2.2
我需要从 WebServiceA 运行 作为 ServiceAccountA 向 WebServiceB 发出 Web 请求,并使用 NTLM 对其进行身份验证。这两个 Web 服务都是托管在 IIS 中的 dotnet core 2.2 API。 ServiceAccountA 是在 IIS 应用程序池上设置的服务帐户。声明一下,我不是在模仿。
我正在使用 RestSharp 库发出 HttpClient 请求。
查看 NTLM 验证器:https://github.com/restsharp/RestSharp/blob/master/RestSharp/Authenticators/NtlmAuthenticator.cs
带有 RestSharp 的 NTLM 验证器使用 System.Net.CredentialCache.DefaultCredentials。这在本地有效,但是在我将 dotnet core 2.2 web api 部署到 windows 服务器并将应用程序托管在 IIS 中(进行中)CredentialCache.DefaultCredentials不再按预期工作。 WebServiceB 返回 401.1,当我检查 IIS 日志时,在质询请求后未传递服务帐户。
我试过使用 System.Net.CredentialCache.DefaultNetworkCredentials 但我遇到了同样的问题。我通过网络浏览器直接点击服务确认 WebServiceB 与 windows 身份验证正常工作,它验证了我的个人 windows 身份就好了。
我可以在任务管理器中看到 IIS 工作进程确实 运行 作为正确的服务帐户。是否有更好或不同的方法从当前 运行 进程中提取 ICredentials 对象?
帮助有类似问题的人。我想post这里的答案。
当您使用 CredentialCache.DefaultCredentials 验证 NTLM 失败时。
您可以尝试禁用 DisableLoopbackCheck。
1.Go 到注册表项 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
2.Create 一个 REG_DWORD(32 位)名为 DisableLoopbackCheck=1
3.Please 重新启动服务器使其正常工作。
我需要从 WebServiceA 运行 作为 ServiceAccountA 向 WebServiceB 发出 Web 请求,并使用 NTLM 对其进行身份验证。这两个 Web 服务都是托管在 IIS 中的 dotnet core 2.2 API。 ServiceAccountA 是在 IIS 应用程序池上设置的服务帐户。声明一下,我不是在模仿。
我正在使用 RestSharp 库发出 HttpClient 请求。
查看 NTLM 验证器:https://github.com/restsharp/RestSharp/blob/master/RestSharp/Authenticators/NtlmAuthenticator.cs
带有 RestSharp 的 NTLM 验证器使用 System.Net.CredentialCache.DefaultCredentials。这在本地有效,但是在我将 dotnet core 2.2 web api 部署到 windows 服务器并将应用程序托管在 IIS 中(进行中)CredentialCache.DefaultCredentials不再按预期工作。 WebServiceB 返回 401.1,当我检查 IIS 日志时,在质询请求后未传递服务帐户。
我试过使用 System.Net.CredentialCache.DefaultNetworkCredentials 但我遇到了同样的问题。我通过网络浏览器直接点击服务确认 WebServiceB 与 windows 身份验证正常工作,它验证了我的个人 windows 身份就好了。
我可以在任务管理器中看到 IIS 工作进程确实 运行 作为正确的服务帐户。是否有更好或不同的方法从当前 运行 进程中提取 ICredentials 对象?
帮助有类似问题的人。我想post这里的答案。
当您使用 CredentialCache.DefaultCredentials 验证 NTLM 失败时。 您可以尝试禁用 DisableLoopbackCheck。
1.Go 到注册表项 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
2.Create 一个 REG_DWORD(32 位)名为 DisableLoopbackCheck=1
3.Please 重新启动服务器使其正常工作。