【问题标题】:.Net Core and NTLM on OSXOSX 上的 .Net Core 和 NTLM
【发布时间】:2017-12-20 09:26:45
【问题描述】:

我有一个 .Net Core 应用程序(它是一个基于 NUnit 的集成测试),它通过使用 HttpClient 的服务器进行授权。服务器使用 NTLM 进行身份验证。

当我在 Windows 下运行此测试时,它运行良好。 当我在 OSX 下运行此测试时,它告诉我存在身份验证错误。

当我使用 fiddler 查看流量时,我注意到服务器响应带有“401”并告诉客户端它可以使用 NTLM 进行身份验证。在 OSX 下,HttpClient 的反应是返回身份验证错误。

OSX 不支持 NTLM 吗?我能以某种方式解决这个问题吗?

【问题讨论】:

  • NTLM 不受 OSX 官方支持 - 它是 Microsoft 专有协议。对于 Active Directory 的 SSO 协议,请使用 Kerberos。但是您要问的是 NTLM,因此请注意,您在 Internet 上看到的任何 NTLM 模块都是 NTLM 的逆向工程版本,它可能有效,也可能无效,或者在某种程度上有效,但可能不是 100%您正在寻找,具体取决于操作系统平台。对于 OSX,我在这里看到了这个,但我从未测试过:wiki.cac.washington.edu/display/UWWI/…
  • 如果你喜欢 OSX 上的 Firefox 网络浏览器,也可以试试这个:src.chromium.org/viewvc/chrome/trunk/src/net/http/…

标签: macos ntlm


【解决方案1】:

我找到了解决方案,我需要这样做:

        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 上完成这项工作?

【讨论】:

  • 你在哪里找到如何做到这一点的?我想收藏它。
  • 我真的找不到了,否则我会贴出来的。这里有一个相关的链接:forums.xamarin.com/discussion/comment/129030,但是解决方法不完全一样。
猜你喜欢
  • 1970-01-01
  • 2020-06-05
  • 1970-01-01
  • 2020-03-03
  • 2016-09-14
  • 2017-05-01
  • 1970-01-01
  • 2019-05-11
  • 1970-01-01
相关资源
最近更新 更多