【问题标题】:Spring security REST api custom HTTP basic authenticationSpring security REST api自定义HTTP基本认证
【发布时间】:2016-10-26 13:30:17
【问题描述】:

对于我的应用程序,我想结合对称加密实现 HTTP 基本身份验证。 base64 编码的用户名和密码在发送时使用加密密钥进行加密,并在 REST api 接收时使用相同的密钥进行解密。

到目前为止,我设法实现了 HTTP 基本身份验证。我不确定如何添加额外的加密层。

我确实有一些想法,我可以如何做到这一点。到目前为止我得到的是:

  1. 在 spring 调用身份验证之前,从标头中检索加密字符串。
  2. 使用加密密钥解密字符串
  3. 将解密后的信息保存在标头中
  4. 使用新标头调用身份验证(现在包含 base64 编码的用户名 + 密码)

我是否走在正确的轨道上,如果是,我该如何在 Spring 中实现这一点?

【问题讨论】:

  • 你处理好了吗?

标签: java spring rest spring-mvc restful-authentication


【解决方案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),它是基于令牌的身份验证的实现。我建议您也看看其他身份验证方法(OAuth 是另一个值得一提的方法)。

【讨论】:

  • 感谢您的建议和资源。我会进一步研究这些。
猜你喜欢
  • 2019-02-07
  • 1970-01-01
  • 2011-02-15
  • 1970-01-01
  • 2016-03-20
  • 2016-04-30
  • 2011-02-11
  • 2015-02-22
  • 2013-01-11
相关资源
最近更新 更多