2016-10-26 105 views
1

對於我的應用程序,我想實現與對稱加密相結合的HTTP基本認證。 base64編碼的用戶名和密碼在發送時使用加密密鑰進行加密,並在REST API收到時使用相同的密鑰進行解密。春季安全REST api自定義HTTP基本認證

到目前爲止,我設法實現了HTTP基本認證。我不知道如何添加額外的加密層。

我確實有一些樣的想法,我怎麼可以使這項工作。到目前爲止,我所得到的是:

  1. 在春季調用認證之前,從標題中檢索加密的字符串。
  2. 使用加密密鑰
  3. 保存在報頭中的解密信息解密串
  4. 新標題(現在包含base64編碼的用戶名+密碼)

調用驗證我在正確的軌道上,如果是的話,我如何去實現這個在春季?

回答

1

不要試圖重新發明輪子。只需使用標準的SSL(HTTPS)安全連接,而不是使用您自己的專有對稱加密:A)實現起來要容易得多B)它遠比您想要做的更安全。請注意,雖然有更好的方法來驗證REST API。

有關與SSL保護基本身份驗證的一些資源: https://security.stackexchange.com/questions/988/is-basic-auth-secure-if-done-over-https https://security.stackexchange.com/questions/44811/is-https-and-basic-authentication-secure-enough-for-banking-webservices-restful HTTPS and BASIC authentication HTTP Basic Authentication Over SSL for REST API

正如我寫的有更好的方法在無狀態的方式,以確保REST API。例如數字簽名的令牌。它可以與SSL結合使用。事實上,無論您選擇哪種身份驗證方法,通過HTTPS公開API都已成爲標準。

這是一個很廣泛的主題,但如果你想了解一些核心REST的身份驗證方法看看JHipster。這是一個很酷的Web應用程序生成器(使用SpringBoot + Angular 1.5堆棧)。對於沒有經驗的開發人員來說,它有很好的文檔記錄和友好性它附帶一個嚮導,您可以在其中選擇驗證方法。查看JSON Web Token(JWT),它是基於令牌的身份驗證的實現。我建議看看其他auth方法(OAuth是值得一提的另一個方法)。

+0

感謝您的建議和資源。我會進一步研究這些。 –