Mono, NTLM and empty Domains
本文关键字:empty Domains and NTLM Mono | 更新日期: 2023-09-27 18:07:54
我正在使用Mono 2.6.7 -如果我没有指定一个域,请求的主机将被用于NTLM身份验证-这会导致登录失败。
1 -工作:登录用户名'domainXYZ/User123' -> Wireshark捕获NTLM包:
Domain name: domainXYZ
User name: User123
2 -工作:登录用户名'User123'在URL http://1.2.3.4/a.txt -> 。Net/Windows :
Domain name: NULL
User name: User123
3 -不工作:登录与用户名'User123' URL http://1.2.3.4/a.txt -> Mono/Debian:
Domain name: 1.2.3.4
User name: User123
这个身份验证请求不工作,因为在目标机器上没有名为1.2.3.4的域。
我的认证代码没有域信息:
NetworkCredential credential = new NetworkCredential(request.Username, request.Password);
// credential = new NetworkCredential(request.Username, request.Password, null); also not working
CredentialCache credentialCache = new CredentialCache { { new Uri(request.Url), "NTLM", credential } };
webClient.Credentials = credentialCache;
任何想法?
我们能够做一个"简单"的工作来解决域问题。一般来说,我们在Objective-C中实现连接作为一个"胖"静态库,为了简单起见,使用ASIHTTPRequest框架,做了这里描述的API绑定,在这里的一些帮助下,我们能够将创建的。dll和。a文件包含到MonoDevelop中并链接到所需的框架。
如果您对源文件感兴趣,请随时与我联系。我也有一些更有趣的链接,帮助我们,但我需要一些更多的声誉来发布它们。另外,请随时向我要。问候,Andreas
编辑:对不起,最重要的信息丢失了。将ASIHTTPRequest中的域设置为空字符串[asiRequest setDomain:@""];
并将整个请求包装在静态库中就可以实现。
我刚刚在Mono主和Mono -2-10分支中修复了这个问题:https://github.com/mono/mono/commit/214741630f96ddd3e847ff4050182674fe2d1602