【问题标题】:Kerberos Authentication header for JAX-WS clientJAX-WS 客户端的 Kerberos 身份验证标头
【发布时间】: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


    【解决方案1】:

    排序,结果我很接近:

    final Map<String, List<String>> headers = new HashMap<String, List<String>>();
    
    headers.put("Authorization", Collections.singletonList("Negotiate " + Base64.encode(tgt)));
    
    ((BindingProvider) sss).getRequestContext().put(MessageContext.HTTP_REQUEST_HEADERS, headers);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多