2015-01-12 4 views
0

SOAP WS와 Websphere Application Server (8.5)를 처음 사용했습니다.Websphere에서 SOAP WS 인증

나는 현재 HTTP를 통해 액세스하는 웹 서비스를 내 목표는 :

  1. 는 Active Directory에있는 사용자에 대한 인증을 구현 HTTPS
  2. HTTP에서 액세스 프로토콜 변경 그룹

나는 this 같은 여러 유래 스레드를 통해 가서 나는 또한 분리 페이지의에도 불구하고 단지 HTTPS를 통해 보조의 지금 어떻게 든 웹 서비스에 대한 'policy 세트'와 연결 시도 올리브 세트. 그런 다음, 나는 또한 IBM developer blog에 따라 사용자 정의 정책 세트와 바인딩을 만들었지 만 다음과 같이마다 나는 (SOAP UI를 사용하여) WS를 호출 :

Oracle Database Vault and Real Application Testing options ,Oracle JDBC driver 11.2.0.2.0). 
[2015-01-12 14:17:09:525 CET] 000000b1 AxisEngine E org.apache.axis2.engine.AxisEngine receive Must Understand check failed for headers: {http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd}Security 
           org.apache.axis2.AxisFault: Must Understand check failed for headers: {http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd}Security 
    at org.apache.axis2.jaxws.handler.HandlerUtils.checkMustUnderstand(HandlerUtils.java:160) 
    at org.apache.axis2.jaxws.server.EndpointController.inboundHeaderAndHandlerProcessing(EndpointController.java:338) 
    at org.apache.axis2.jaxws.server.EndpointController.handleRequest(EndpointController.java:260) 
    at org.apache.axis2.jaxws.server.EndpointController.invoke(EndpointController.java:103) 
    at org.apache.axis2.jaxws.server.JAXWSMessageReceiver.receive(JAXWSMessageReceiver.java:161) 
    at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:208) 
    at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:172) 
    at com.ibm.ws.websvcs.transport.http.WASAxis2Servlet.doPost(WASAxis2Servlet.java:1583) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:595) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:668) 
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1227) 
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:776) 
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:458) 
    at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178) 
    at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1032) 
    at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:87) 
    at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:909) 
    at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1662) 
    at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:200) 
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:459) 
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:526) 
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:312) 
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:283) 
    at com.ibm.ws.ssl.channel.impl.SSLConnectionLink.determineNextChannel(SSLConnectionLink.java:1048) 
    at com.ibm.ws.ssl.channel.impl.SSLConnectionLink.readyInboundPostHandshake(SSLConnectionLink.java:716) 
    at com.ibm.ws.ssl.channel.impl.SSLConnectionLink$MyHandshakeCompletedCallback.complete(SSLConnectionLink.java:412) 
    at com.ibm.ws.ssl.channel.impl.SSLUtils.handleHandshake(SSLUtils.java:1066) 
    at com.ibm.ws.ssl.channel.impl.SSLHandshakeIOCallback.complete(SSLHandshakeIOCallback.java:87) 
    at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:175) 
    at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217) 
    at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161) 
    at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138) 
    at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204) 
    at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775) 
    at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905) 
    at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1862) 
:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v1="http://xmlns.scania.com/logistics/schema/transport/v1"> 
    <soapenv:Header> 
     <wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> 
     <wsse:UsernameToken wsu:Id="UsernameToken-7AEC79B67DC85BBB5A14210677185104"> 
      <wsse:Username>12345</wsse:Username> 
      <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">12345</wsse:Password> 

     </wsse:UsernameToken> 
     </wsse:Security> 
    </soapenv:Header> 
    <soapenv:Body> 
     <v1:TransportInformationRequest> 
     <!--1 or more repetitions:--> 
     <v1:ChassisNumber>2105909</v1:ChassisNumber> 
     </v1:TransportInformationRequest> 
    </soapenv:Body> 
</soapenv:Envelope> 

I는 서버 측에서 오류가

헤더를 제거하고 단순히 본문을 전달하면 응답이 정확합니다.

웹 서비스가 헤더를 처리하기 위해 제대로 구성되어 있지 않지만 계속 진행해야하는 방법을 실제로 수립 할 수 없다는 것을 알고 있습니다.

모든 관련 입력을 환영합니다. 응용 프로그램이 JAX-WS하고 활성 디렉토리가 웹 스피어 레지스트리 경우

답변

0

, 당신은 UsernameToken을 위해 WS-보안 제약 조건을 추가하려면이 기사를 따를 수 : Active Directory가 아닌

http://www-01.ibm.com/support/knowledgecenter/SSEQTP_8.5.5/com.ibm.websphere.base.doc/ae/twbs_stand_alone_security_token.html

경우 는 WebSphere 레지스트리, 당신은 또한이 작업을 수행하고 사용자 지정 코드에서 AD로 인증을 수행하는 코드를 작성해야하는 것은 :

http://www-01.ibm.com/support/knowledgecenter/SSEQTP_8.5.5/com.ibm.websphere.base.doc/ae/twbs_replace_authmethod_usernametoken.html

당신은 THER 2 단계 그렇게해야한다면 전자 당신은 또한 사용자 용 WebSphere 자격 증명을하려는 경우이 작업을 수행해야합니다 : 당신이에 WS-보안 정책 유형을 추가 한 첫번째 문서의 시점에서, HTTPS를 얻기 위하여

http://www-01.ibm.com/support/knowledgecenter/SSEQTP_8.5.5/com.ibm.websphere.base.doc/ae/twbs_config_wssec_caller_no_reg.html

policy 세트가 있으면 SSLTransport policy 유형도 추가하게됩니다.

+0

링크가있어이 게시물을 삭제해야한다고 생각하는 모든 사용자는 링크의 내용에서 게시물을 만들 수 없습니다. 엔진은 코드의 형식이 올바르지 않아서 게시 할 수 없다고 주장합니다. 코드를 컴파일하고 표시 했으므로 아무런 결과없이 적어도 10x를 Ctrl-k로 입력했습니다. 누군가가이 링크에서 매우 긴 게시물을 만들 수 있다고 생각한다면 제발 그렇게하십시오. –