불행하게도이 기능을 기본적으로 지원하지 않는 서버에서 ws-security 보안 웹 서비스를 호출하려고합니다. 필자가 취한 접근법은 ws-security 요소를 사용하여 요소를 추가하는 과정에서 실제 엔드 포인트 URL에 대한 역방향 프록시 역할을하는 .jsp를 구현하는 것입니다.ws-security에 대한 비밀번호 다이제스트 구현 Java의 UsernameToken
이것은 꽤 잘 작동하는 것 같습니다. XML을 올바른 네임 스페이스 등으로 올바르게 구성했다고 확신합니다. SOAP-UI에서 생성 된 XML과 XML을 비교하여이를 확인했습니다.
암호 다이제스트 생성기를 구현하는 데 문제가 있습니다. SOAP-UI가 NOnce, xsd : dateTime 및 password, 그리고 다음 코드에 대해 동일한 입력을 사용하는 것과 동일한 결과를 얻지 못합니다.
StringBuffer passwordDigestStr_ = new StringBuffer();
// First append the NOnce from the SOAP header
passwordDigestStr_.append(Base64.decode("PzlbwtWRpmFWjG0JRIRn7A=="));
// Then append the xsd:dateTime in UTC timezone
passwordDigestStr_.append("2012-06-09T18:41:03.640Z");
// Finally append the password/secret
passwordDigestStr_.append("password");
System.out.println("Generated password digest: " + new String(com.bea.xbean.util.Base64.encode(org.apache.commons.codec.digest.DigestUtils.sha(passwordDigestStr_.toString())), "UTF-8"));
I 문제가 타임 스탬프가 해싱하면서 논스는 그 디코딩 된 값의 옥텟 시퀀스를 사용하여 해싱된다 http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0.pdf
참고하여 설명한 바와 같이, 제 1 두 요소의 해시를 구현하는 생각 엘리먼트의 내용에 명시된대로 UTF8 인코딩의 옥텟 시퀀스를 사용한다.
나를 미치게하기 시작한 사람이 있다면이 문제를 해결하는 데 큰 도움이 될 것입니다. 소스 코드를 제공 할 수 있다면 이상적입니다.
SOAP-UI에서 샘플 입력 값과 출력 값을 게시 할 수 있습니까? 그렇게하면 SOAP-UI가 아니라 자바와 코드만으로 도울 수 있습니다. –