jersey を使用して REST サービスを実装しました。通信層はsslで保護されています。クライアント側では、サービスを呼び出してサーバー側で要求を検証する前に、xml に署名する必要があるという要件がありました。 http://docs.oracle.com/javase/6/docs/technotes/guides/security/xmldsig/XMLDigitalSignature.html
現時点での私のサービス:
@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);
これを処理する最善の方法は何ですか? タイプを String に変更して完全な xml を取得し、それを確認してから jaxb を使用してオブジェクトを取得するだけです。クライアント側では、xml を手動で作成して文字列を投稿することもできます。
この解決策は、私には非常に残念に思えます。何か案は?
よろしく、M