【发布时间】:2014-10-25 16:34:39
【问题描述】:
我正在使用ws-import 生成我的Web 服务以连接到我在IIS 上使用Kerberos 保护的aspx 服务。
当我使用SOAPConnection 连接到服务时,我能够很好地连接和验证
final SOAPConnection conn = SOAPConnectionFactory.newInstance().createConnection();
try {
final MessageFactory msgFactory = MessageFactory.newInstance();
final SOAPMessage message = msgFactory.createMessage();
final MimeHeaders headers = message.getMimeHeaders();
if (spnegoToken != null) {
headers.addHeader("SOAPAction", "http://tempuri.org/HelloWorld");
headers.addHeader("Authorization", "Negotiate " + Base64.encode(spnegoToken));
}
message.getSOAPBody().addBodyElement(new QName("http://tempuri.org/", "HelloWorld", "tem"));
final SOAPMessage response = conn.call(
message, "http://server:9994/WebService/SampleService.asmx");
return response.getSOAPBody().getTextContent();
} finally {
conn.close();
}
但是我无法以相同的方式将授权标头添加到 JAXWS 生成的 WS:
final SampleServiceSoap sss= new SampleService().getSampleServiceSoap();
((BindingProvider) sss).getRequestContext().put(
"Authorization", "Negotiate " + Base64.encode(spnegoToken));
return sss.helloWorld();
我收到一个 401 错误作为令牌,因为我看不到 Wireshark 中附加的令牌。 谁能指出我应该采取的方法? 干杯, 巴里
【问题讨论】:
标签: web-services jax-ws kerberos wsimport spnego