2016-01-18 39 views
1

我有一個接受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標頭進行簽名。無論如何,如何計算它呢?

+0

您是否成功提供了建議的答案? – Xvolks

+0

是的,工作正常:) – h22

回答

相關問題