我有一个Spring应用程序,它接受JSON消息,编写如下
@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报头进行签名。无论如何,如何先计算它?
发布于 2016-01-18 09:23:31
您可以使用Spring的servlet过滤器,也可以在请求和响应中修改内容
例子:
http://www.mkyong.com/spring-mvc/how-to-register-a-servlet-filter-in-spring-mvc/
或者您可以使用Spring3MVC拦截器http://viralpatel.net/blogs/spring-mvc-interceptor-example/
https://stackoverflow.com/questions/34849655
复制相似问题