2014-10-25 3 views
0

ws-import를 사용하여 webservice를 생성하여 IIS의 Kerberos로 보안 설정 한 aspx 서비스에 연결합니다. JAXWS 같은 방식으로 WS 생성에 나는 연결하고 내가 인증 헤더를 추가 할 수 없습니다 오전 그러나 나는 단지는 SOAPConnectionJAX-WS 클리닉의 Kerberos 인증 헤더

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(); 
    } 

를 사용하여 서비스에 연결할 때 미세 인증 할 수 있어요 :

final SampleServiceSoap sss= new SampleService().getSampleServiceSoap(); 
    ((BindingProvider) sss).getRequestContext().put(
     "Authorization", "Negotiate " + Base64.encode(spnegoToken)); 
    return sss.helloWorld(); 

Wireshark에 첨부 된 토큰을 볼 수 없어서 토큰으로 401 오류가 발생합니다. 누구든지 내가 취해야 할 접근법을 가르쳐 줄 수 있습니까? 건배, 베리

답변

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);