2017-04-20 3 views
0

나는 문자열을 생성 한 CXF SoapMessage를 사용하는 프로젝트에서 작업하고 있습니다. 나는 사용자 이름 토큰 유효성 검사를 사용하려고 시도하지만 NullPointerException을 던졌습니다.사용자 이름 토큰 유효성 검사 오류

사용 된 소스 코드 [1]입니다. 나는 문자열로 initiateComplianceCheck 메쏘드로 SOAP 메시지 [2]를 전달한 다음 그것을 CXF SoapMessage 객체로 변환하고 Username Token 인증을 위해 사용한다.

[1] https://gist.github.com/anonymous/bfb6f65194a030a50681af175a9937f5

[2] https://gist.github.com/anonymous/f704db6147e02acdff323dc67ccff6d6

그러나 CXF handleMessage는 NullPointerException이

java.lang.NullPointerException at 
org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.handleMessage(WSS4JInInterc 
eptor.java:165) 

을 던져 오류 메시지의 일부입니다 당신이 할 수있는 경우 감사합니다에게 제공 이 문제를 해결하는 데 도움이됩니다.

+0

더 많은 정보를 제공해야한다고 생각합니다. 많은 사람들이 CXF를 사용하지 않으므로 라이브러리의 버전과 같은 것이 더 필요합니다. [이 링크를 확인하십시오] (http://stackoverflow.com/questions/37698141/java-cxf-ws-security-a-security-error-was-encountered-when-verifying-the-mess) – Teocci

답변

0

SoapMessage에 메시지 교환 집합이 없기 때문에 NPE가 있습니다. 당신은 당신의 코드에 다음에 추가 할 수 있습니다

Exchange ex = new ExchangeImpl(); 
ex.setInMessage(message); 

예 : 그런데

https://github.com/apache/cxf/blob/3.1.x-fixes/rt/ws/security/src/test/java/org/apache/cxf/ws/security/wss4j/WSS4JInOutTest.java

, 내가 샘플에서 사용하고있어 WSSE 공간은 매우 오래된 표준에서이며, 작동하지 않습니다. 대신 xmlns : wsse = " http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" 이어야합니다.