Spring安全性:宁静的Web服务和维护用户会话

时间:2017-06-23 10:52:04

标签: java ajax spring spring-security spring-rest

在经典的jsp或php应用程序中,用户会话可以通过以下过程来维护 1)首次访问资源时,使用userid&和挑战用户进行身份验证。密码。
2)如果凭证正确,则成功验证用户并创建会话ID 3)将sessionid附加到标题并将响应发送回用户请求的信息 4)在用户的后续请求中,服务器检查标题中的有效sessionid 5)如果sessionid有效且未过期,则不需要进行身份验证,并允许用户执行请求的操作。

上述要点仅供用户输入一次凭据。

但是如何在休息完整设计中实现这一点,其中通过ajax / jquery调用访问资源。与经典JSP一样,如果我希望用户只输入一次凭证,那么如何实现(至少我不知道如何使用ajax请求将头文件(即sessionid)传递给服务器)

我正在使用 spring restful web services api和 spring security - 即使用基本身份验证委派过滤器代理(spring安全过滤器链)。我希望用户只登录一次他的凭据登录,随后对服务器上的restful资源的ajax请求应该能够自动找出用户最近登录并且应该被允许在需要的情况下对restful资源执行请求的操作重新认证。

1 个答案:

答案 0 :(得分:1)

首先,您需要配置Spring Security,以涵盖您的REST API,以下是有关如何执行此操作的示例之一 - Spring Security for a REST API

保持用户身份验证的一种方法是将会话ID存储在cookie或任何其他存储中,这样后端可以验证它。在后端,REST API应该是无状态的。因此,最好的方法是在某些会话表中将会话ID保存在数据库中(Redis是此类情况的常用解决方案。)

如果您想设计一个REST API,我会在每个AJAX来电解释时在标题中发送会话ID。一种API方法应该对用户进行身份验证并提供令牌(或会话ID),该令牌应由客户端存储在某处(例如,在cookie中)。所有其他方法都应该要求它能够访问资源。当用户注销时,应删除此值,用户无法访问资源。