2013-03-14 66 views
0

我使用球衣實現了我的REST服務。通信層用ssl進行保護。 在客戶端,我得到了我在調用服務並在服務器端驗證請求之前應該簽署xml的要求。 http://docs.oracle.com/javase/6/docs/technotes/guides/security/xmldsig/XMLDigitalSignature.htmlJersey REST標誌xml

我此刻的服務:

@POST 
@Path(CONFIRM_PATH) 
@Produces({ MediaType.APPLICATION_XML }) 
public ConfirmResponse confirm(ConfirmRequest request){ 
    // verify the signed confirm request 
} 

客戶端代碼(逃得掉緩存服務實例的可讀性:

ClientConfig config = new DefaultClientConfig(); 
Client client = Client.create(config); 
client.setConnectTimeout(CLIENT_CONNECT_TIMEOUT); 
client.setReadTimeout(CLIENT_READ_TIMEOUT); 

URI uri = UriBuilder.fromUri(url).build(); 
WebResource service = client.resource(uri); 
// sign should happen here 
ConfirmResponse response = service.post(ConfirmRequest.class, confirmRequest); 

什麼是處理這個問題的最好方法是什麼? 我可以簡單地將類型更改爲字符串來獲取完整的xml,驗證它並使用jaxb之後獲取對象。 在客戶端,我也可以手動創建xml併發布字符串。

這個解決方案聽起來讓我非常失望。有任何想法嗎?

最好的問候, 米

回答

1

上發出的請求使用過濾器,並簽署它。更友好的是,你不需要重複代碼,你有中央控制。

+0

聽起來不錯。謝謝! – mkuff 2013-03-14 13:09:19