我有一个.Net Core应用程序(它是一个基于NUnit的集成测试),使用HttpClient与服务器进行授权。服务器使用NTLM进行身份验证。
当我在Windows下运行此测试时,它工作正常。当我在OSX下运行此测试时,它告诉我存在身份验证错误。
当我使用fiddler观察流量时,我注意到服务器响应为“401”并告诉客户端它可以使用NTLM进行身份验证。在OSX下,HttpClient的反应是返回认证错误。
OSX不支持NTLM吗?我能以某种方式修复此问题吗?
我找到了解决方案,我需要这样做:
var credential = new NetworkCredential(userName, password, domain);
var myCache = new CredentialCache();
myCache.Add(new Uri(myURL), "NTLM", credential);
var handler = new HttpClientHandler();
handler.Credentials = myCache;
现在它在osx下运行!
但它停止在Windows上工作:-)。
我可以做一个“如果”以确定我是否在osx上......
也许有更好的方法让这个工作在osx和windows上?