【发布时间】:2013-05-06 22:38:02
【问题描述】:
我使用 Spring Security 来保护使用 Spring 构建的 RESTful Web 服务,但过去请求使用身份验证标头进行身份验证。现在,当用户的凭据在 cookie 中时,我需要保护这样的应用程序。
我正在尝试找出从 cookie 中提取用户信息并将其放入身份验证标头中的最佳方法,或者理想情况下仅将 cookie 的值用于UserDetailsService 中的loadUserByUsername 方法豆子。
到目前为止,我已经提出了一些关于如何做到这一点的想法:
我可以添加一个
HandlerInterceptor以使用cookie 将身份验证标头添加到请求中。但是,并非所有请求都需要身份验证,因此如果我这样做了,我希望将其应用于某些方法或请求映射而不是其他方法,我不知道该怎么做。我可以实现
AuthenticationEntryPoint,如this tutorial 所示。在那个教程中,虽然我真的不明白为什么他有response.sendError( HttpServletResponse.SC_UNAUTHORIZED, "Unauthorized" );作为commence方法的主体。在我的用例中,我会在那里使用 cookie 添加身份验证标头吗?我可以在所有控制器方法的第一行中使用自定义方法执行安全检查。似乎当您遵循 Spring Security 的理想路径时,它是一个非常好的解决方案。不过,我需要做的似乎偏离了这一点,我的要求实际上很简单。也许我最好还是用简单的老式方法来做这件事?
我不知道/没有想到的更好的主意!
感谢您的帮助和想法!
【问题讨论】:
-
注意:将用户密码存储在 cookie 中是不安全的。您可以在不将其存储在 cookie 中的情况下解决您的问题。
-
@Michael 我很欣赏这个建议,但实际上 cookie 中没有密码。我需要使用该 cookie 的值进行身份验证这一事实超出了我的控制范围。
标签: java spring rest spring-security