我有一个接受JSON消息的弹簧安置应用程序,这样写如何签署Spring Rest控制器使用的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标头进行签名。无论如何,如何计算它呢?
您是否成功提供了建议的答案? – Xvolks
是的,工作正常:) – h22