我正在使用rampart來保護web服務客戶端的通信。在城牆中傳輸級安全性和消息級安全性是不可能的?爲什麼?
遵循規範我定義了一個非對稱綁定斷言來提供消息級別的安全性,但我也希望通過SSL與webservice進行通信,因此我還定義了一個適當的傳輸綁定斷言。
結果是我的客戶端能夠通過SSL連接到web服務,但是在發送的消息中,沒有簽名 - 看起來好像不對稱綁定斷言被忽略。
實際上是這樣嗎?如果是這樣的話 - 這是一個在壘的錯誤,還是由WS安全策略規範禁止?(我還沒有找到任何這樣的信息)?
展望壁壘的MessageBuilder類源,我發現這一點:
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);
}
這又讓我想到,一個只能使用安全性的一個結合和如果有更多的,則根據上述代碼優先選擇一個。