gpt4 book ai didi

c# - CredentialCache.DefaultCredentials 不遵守 dotnet core 2.2 的 IIS App Pool Credentials

转载 作者:行者123 更新时间:2023-12-05 02:58:53 26 4
gpt4 key购买 nike

我需要从作为 ServiceAccountA 运行的 WebServiceA 向 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,但我遇到了同样的问题。我通过 Web 浏览器直接访问该服务,确认 WebServiceB 与 Windows 身份验证一起正常工作,并且它可以很好地验证我的个人 Windows 身份。

我可以在任务管理器中看到 IIS 工作进程确实以正确的服务帐户运行。是否有更好或不同的方法从当前运行的进程中提取 ICredentials 对象?

最佳答案

帮助有类似问题的人。我想在这里发布答案。

当您无法使用 CredentialCache.DefaultCredentials 对 NTLM 进行身份验证时。您可以尝试禁用 DisableLoopbackCheck。

1.转到注册表项 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa

2.创建一个名为 DisableLoopbackCheck=1

的 REG_DWORD(32 位)

3.请重启服务器使其正常工作。

enter image description here

关于c# - CredentialCache.DefaultCredentials 不遵守 dotnet core 2.2 的 IIS App Pool Credentials,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58513675/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com