我有一个接受JSON消息的Spring REST应用程序,类似于
@RequestMapping(value = "/myhook", method = RequestMethod.POST,
produces = JSON, consumes = JSON)
public @ResponseBody MyResponse doIt
(@Valid @RequestBody(required = true) MyContractRequest request) {
MyResponse response;
...
return response;
}
这几乎没有代码可以支持,但现在我需要签署响应和请求。
我从简单地计算Java级别的所有消息字段的共享签名并将其分配给专用签名字段开始。但是,这需要拥有并维护用于计算签名的代码:
public void update(java.security.Signature sign) throws Exception {
sign.update(name);
sign.update(value);
sign.update(etc);
}
我周围的一些人表示,编写和维护此签名代码的需求可能不是最佳设计,将整个消息签名为单个JSON字符串可能更好。我可以手动将请求作为字符串获取,然后手动处理JSON,但我真的想保留Spring控制器的概念。
此外,我在消息本身中不能再有签名字段,因为此字段的值显然也会更改JSON字符串的签名。
有没有办法在邮件出发和到达时计算整个JSON邮件正文的签名,以及在何处放置签名以便可以将其与邮件一起传递?其中一个想法是使用自定义HTTP标头进行签名。无论如何,如何先计算它?
答案 0 :(得分:1)
你可以使用带有Spring MVC的servlet过滤器,并在请求和响应中修改你想要的内容
示例:
http://www.mkyong.com/spring-mvc/how-to-register-a-servlet-filter-in-spring-mvc/
或者您可以使用Spring 3 MVC Interceptor http://viralpatel.net/blogs/spring-mvc-interceptor-example/