当前位置: 首页 > 知识库问答 >
问题:

Spring security REST api自定义HTTP基本身份验证

鲁霄
2023-03-14

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

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

我在正确的轨道上吗?如果是的话,我该如何在Spring中实现它呢?

共有1个答案

于恺
2023-03-14

不要试图推倒重来。只需使用标准的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和基本身份验证HTTP通过SSL进行REST API的基本身份验证

正如我所写的,有更好的方法以无状态的方式保护REST API。例如数字签名的令牌。它可以与SSL相结合。事实上,无论您选择何种身份验证方法,通过HTTPS公开API已经成为一种标准。

这是一个广泛的主题,但如果您想了解一些核心的REST身份验证方法,请参阅jhipster。这是一个很酷的web应用程序生成器(带有SpringBoot+Angular 1.5堆栈)。它有很好的文档,即使对没有经验的开发人员也很友好。它附带了一个向导,您可以在其中选择身份验证方法。看看JSON Web令牌(JWT),它是基于令牌的身份验证的实现。我建议您也看看其他的身份验证方法(OAuth是另一个值得一提的方法)。

 类似资料:
  • 我尝试了angular.js,并从一个restful api的web-ui开始(使用超文本传输协议基本授权)。这真的很好,除了授权工作。 到目前为止,我使用的是设置密码,但大多数情况下浏览器会打开http basic auth的默认登录表单。另一个奇怪的行为是angular请求不包含授权头(选项和GET请求都不包含)。我还尝试使用header配置在每个请求上设置此header,但这也不起作用。 有

  • 在Laravel 5中,如果用户的基本身份验证失败,则返回的默认消息是“无效凭据”错误字符串。出现这种情况时,我试图返回一个自定义JSON错误。 我可以在vendor/laravel/framework/src/illumb/Auth/SessionGuard.php中编辑返回的响应,但是我还没有看到可以在vendor目录之外的何处更改此消息的行为。有办法吗? 看起来有一些方法可以通过Larave

  • 问题内容: 我想写书,所使用的一个一个的NodeJS REST的API服务器Joyent的,并且一切正常,除了我无法验证普通用户的身份验证。如果我跳到终端并执行,则无法在NodeJS http服务器上获取值username:password。如果我的NodeJS http服务器类似于 ,是否应该在来自回调的 req 对象中某处获取值username:password ?如何获得这些值而不必使用Co

  • 问题内容: 这是我的情况: 一个Web应用程序对许多应用程序执行某种SSO 登录的用户,而不是单击链接,该应用就会向正确的应用发布包含用户信息(名称,pwd [无用],角色)的帖子 我正在其中一个应用程序上实现SpringSecurity以从其功能中受益(会话中的权限,其类提供的方法等) 因此,我需要开发一个 自定义过滤器 -我猜想-能够从请求中检索用户信息,通过自定义 DetailsUserSe

  • 问题内容: 我可以使用Google帐户在AppEngine中对用户进行身份验证的方式非常好。 但是,我需要使用 自定义的身份验证登录系统 。 我将有一个AppUsers表,其中包含用户名和加密密码。 我阅读了有关gae会话的内容,但在启动应用安全性方面需要帮助。 如何跟踪经过身份验证的用户会话?设置cookie? 初学者。 问题答案: 您可以使用cookie来做到这一点……其实并不难。您可以使用C

  • 我在spring MVC项目中实现了一个自定义身份验证提供程序。在我自己的重载authenticate()方法中,我实现了自己的身份验证,其中我构造了自己的UserPasswordAuthenticationToken()并返回对象。 现在,上述对象“UserPasswordAuthentictionToken”中的用户ID被匿名化,密码为null,权限设置为授予该用户的权限。 问题: 这是否会导