2013-08-23 5 views
0

웹 서비스 클라이언트로부터 통신을 보호하기 위해 rampart를 사용하고 있습니다.횡단 보도에 전송 수준 보안과 메시지 수준 보안을 둘 다 사용할 수 있습니까? 왜?

사양에 따라 메시지 수준의 보안을 제공하기 위해 비대칭 바인딩 어설 션을 정의했지만 SSL을 통한 웹 서비스와의 통신이 필요하므로 적절한 전송 바인딩 어설 션도 정의했습니다.

내 클라이언트가 SSL을 통해 웹 서비스에 연결할 수 있지만 보내는 메시지에 서명이 없습니다. 비대칭 바인딩 어설 션이 무시 된 것처럼 보입니다.

실제로 사실입니까? 그렇다면 이것은 성벽에있는 버그입니까, 아니면 WS Security Policy 사양에 의해 금지되어 있습니다 (그러한 정보를 찾지 못했습니다)?

if(rpd.isTransportBinding()) { 
    log.debug("Building transport binding"); 
    TransportBindingBuilder building = new TransportBindingBuilder(); 
    building.build(rmd); 
} else if(rpd.isSymmetricBinding()) { 
    log.debug("Building SymmetricBinding"); 
    SymmetricBindingBuilder builder = new SymmetricBindingBuilder(); 
    builder.build(rmd); 
} else { 
    AsymmetricBindingBuilder builder = new AsymmetricBindingBuilder(); 
    builder.build(rmd); 
} 

(전체 코드 : http://grepcode.com/file/repo1.maven.org/maven2/org.apache.rampart/rampart-core/1.6.2/org/apache/rampart/MessageBuilder.java) 성벽의 MessageBuilder 클래스 소스에 보면

내가이 발견했습니다 그것은 나를 다시 생각하게

는, 하나의 바인딩 하나의 보안을 사용할 수 있고 그 중 더 많은 것이 있으면 위의 코드에 따라 우선 순위가 선택됩니다.

답변

0

마지막으로 내 문제를 해결했다고 생각합니다.

처음에는 클라이언트가 SSL을 통한 웹 서비스와 통신하기 위해 정책에서 전송 바인딩 어설 션을 필요로한다고 생각했습니다. 나는 또한 그러한 주장이 없다면 ramp:sslConfig 문장은 무시 될 것이라고 생각했다.

진실은 당신이 가능 SSL을 통해 통신 할 수 있도록 전송 바인딩 주장을하지 않아도,이다, 당신은 그것을 을 요구하기 위해 그들을 필요합니다. 클라이언트의 정책에 그러한 주장이 없지만 엔드 포인트가 SSL 연결을 요구하면 클라이언트는 여전히이를 설정하려고 시도하고 필요하면 ramp:sslConfig 태그 또는 다른 방법으로 (예 : JVM을 통해 구성된 javax.net.ssl.trustStorejavax.net.ssl.trustStorePassword 변수를 찾습니다. 인수 또는 프로그래밍 방식으로).

내 경우 솔루션은 비대칭 바인딩 어설 션을 변경하지 않고 트랜스 포트 바인딩 어설 션을 추가하지 않고 trustStore 만 구성하는 것이 었습니다.

아직도 한 가지 정책에서 두 가지 주장을 사용하지 않는 것이 왜 불투명 한가요?

0

나는 하나 이상의 바인딩을 사용할 수 있는지 여부를 지정하지 않는다는 점에 대해서도 동의한다.하지만 우리는 둘 다 놓쳤을 수있다. 그러나 HTTPS 끝점에 대해 여전히 비대칭 바인딩을 사용할 수 있습니다.