java - 用于 IIS 集成 Windows 身份验证 (NTLM) 的 JAX-WS 客户端

标签 java web-services

最近,我正在开发一个项目,该项目需要使用 Java 构建一个在 JAX-WS 引擎上运行的 Web 服务客户端,以便与受集成 Windows 身份验证(也称为 NTLM 协议(protocol))保护的 .NET Web 服务通信

我在网上搜索了一下。这似乎是一个众所周知的问题,但目前还没有人有好的解决方案。

以前有人这样做过吗?

如有任何建议,我们将不胜感激。

最佳答案

我们使用的是 java 6 中内置的 JAX-WS,并在 Windows XP 和 Windows 2003 Server 上运行客户端。服务器是 Windows 2003 Server 上的 IIS 7。

我惊讶地发现集成身份验证可以开箱即用。未提供配置。我在HTTP层打开了跟踪日志记录,发现正在使用NTLM身份验证。不确定如果仅使用协商身份验证并关闭 NTLM 是否会起作用。

基本上,答案是:它确实有效。

测试:

package url.auth;

import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;
import java.util.Map;

import org.apache.commons.io.IOUtils;

public class DownloadUrl {
    public static void main(String[] args) {

        try {
            URL url = new URL("http://myserver/url/that/requires/authentication");
            URLConnection conn = url.openConnection();
            InputStream is = conn.getInputStream();
            Map<String, List<String>> headers = conn.getHeaderFields();
            for(String header : headers.keySet()) {
                System.out.println(header + ": " + headers.get(header));
            }
            System.out.println("");
            System.out.println(IOUtils.toString(is));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

关于java - 用于 IIS 集成 Windows 身份验证 (NTLM) 的 JAX-WS 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1050627/

相关文章:

java - JAX-WS 处理程序 - handleMessage 未运行

web-services - 谷歌结账 : Best way to handle cart editing and checkout confirmation

java - 打破来自不同类的循环

java - Java 中的 Drupal 风格 base64 编码

java - Hashicorp Vault 加密数据

ruby - 无法从同一网络上的另一台计算机访问本地 Sinatra 服务器

java - 从 API 方法到 Servlet 的 Google App Engine Java HTTP Post 图像

java - 是否可以将特定信息放入界面中?

web-services - 如何集成 ServiceStack 和 DotNetNuke 以在 DNN 身份验证上下文中提供 REST 服务?

javax.net.ssl.SSLKeyException : FATAL Alert:BAD_CERTIFICATE - A corrupt or unuseable certificate was received