2016-10-26 106 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

感谢您的建议和资源。我会进一步研究这些。 –