java - 泽西 REST 标志 xml

标签 java xml rest jersey signing

我使用 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 并发布一个字符串。

这个解决方案听起来非常令我失望。有什么想法吗?

最诚挚的问候, 米

最佳答案

对传出请求使用过滤器并在那里签名。更加友好,因为您不需要重复代码并且可以进行集中控制。

关于java - 泽西 REST 标志 xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15404039/

相关文章:

java - 使用 Java Rally Rest API 提取 Rally 缺陷讨论

java - 找不到类 - JavaFX native 打包

javascript - 如何在 Javascript 中深度克隆 XMLDocument 对象?

java - 在Java中使用xpath解析由多个xml文件组成的xml字符串

android - 更改 NinePatchDrawable 资源颜色

api - 使用 ZAP 进行 REST API 测试

java - 如何使用 spring 集成通过 http header 动态传递值

java - JPA Join 打印多个结果

java - 抽象方法与无实例方法?

java - Guava ImmutableBiMap 变为 LinkedHashMap 并导致 Spring Autowiring 错误