- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试使用 HttpUrlConnection 类将我的 Android 应用程序连接到 IIS 服务器。
我的服务器需要用户进行身份验证,因此它向客户端发送以下质询:
WWW-Authenticate: Negotiate
WWW-Authenticate: NTLM
我的问题是 HttpUrlConnection 似乎没有解析它。因此 getPasswordAuthentication() 永远不会被调用,它会返回一个 IOException“未找到身份验证挑战”。
这是我的代码:
Authenticator.setDefault(new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("myUsername", "myPassword".toCharArray());
}
});
URL url = new URL(myUrl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Accept-Encoding", "gzip");
conn.setRequestProperty("Accept-Charset", "UTF-8");
conn.setRequestProperty("Accept", "*/*");
conn.setRequestProperty("Connection", "close");
conn.setDoOutput(true);
conn.setDoInput(true);
try
{
conn.connect();
status_code = conn.getResponseCode();
}catch (IOException e) {
...
}
我真的开始认为 HttpUrlConnection 不支持 NTLM 质询。我看到一些库似乎可以完成这项工作,但我不想使用外部库。
有人可以确认是否可以让 HttpUrlConnection 在没有外部库的情况下处理 NTLM 质询吗?
最佳答案
我只能通过设置 AuthScheme 和下面的库使其与 HttpClient 一起工作:http://jcifs.samba.org/src/jcifs-krb5-1.3.17.zip .
HttpClient httpclient = new HttpClient(httpParameters, context);
NTCredentials creds = new NTCredentials(“username”, “password”, "", "dir");
httpclient.getCredentialsProvider().setCredentials(
new AuthScope(context.getString(“whatever is your main URL”), -1), creds);
httpclient.getAuthSchemes().register("ntlm", new NTLMSchemeFactory());
然后您实现 JCIFS 引擎和工厂。您可以在 http://hc.apache.org/httpcomponents-client-4.2.x/ntlm.html 中找到 sample
关于android - HttpUrlConnection 在 Android 上找不到 NTLM 质询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17176010/
质询-响应身份验证如何防止中间人攻击?我阅读了 wiki 文章,但仍然无法理解。 最佳答案 一般来说,质询-响应系统不一定能防止中间人攻击:如果 Alice 试图告诉 Bob 她的银行帐号,那么这个确
我正在尝试访问 iPhone 应用程序中的某些 Web 服务。 如果我 GET 到 .asmx 页面,我将进行身份验证并按预期获取 WSDL。 但是,如果我 POST 到 .asmx 页面,设置 SO
我正在将 Web 表单应用程序从表单例份验证迁移到 OpenID Connect(使用 OWIN 和 IdentityServer3)。该应用程序在 web.config 中已经有很多“授权”元素(用
我正在尝试使用 HttpUrlConnection 类将我的 Android 应用程序连接到 IIS 服务器。 我的服务器需要用户进行身份验证,因此它向客户端发送以下质询: WWW-Authentic
我在 AfterReceiveRequest 中获得了一些值,并希望在 WCF 的 BeforeSendReply 中使用它。 请帮助我,我该怎么做。我正在处理 C# 项目文件。我不能在这里使用 Se
我知道您可以使用以下方法在 ASP.Net 应用中启用 NTLM 身份验证: 但是 - 我需要在同一应用程序中处理表单、HTTP 和其他自定义身份验证,因此 ASP.Net 有限的内置支持没有用。
我是一名优秀的程序员,十分优秀!