我们可以将认证令牌放在会话对象中吗?

时间:2018-04-09 12:11:07

标签: java servlets

我们可以在会话对象中放置身份验证令牌吗?

例如:

session.setAttribute("authToken",authTokne);

在我的情况下,我必须在每个请求调用中使用authToken

在服务层,我正在使用第三方服务。在每个请求中,我需要传递身份验证令牌。获取身份验证令牌也是一个请求。我需要一步一步地做很多请求调用。首先请求我获得令牌并将其保持在对象级别。一段时间后,我需要从不同的位置(另一个类/对象)发出另一个请求,现在令牌在这里不可用。对于我需要发送令牌的另外一个请求。所以每次调用一个令牌时都要避免这种情况,我可以将这个令牌放在servlet会话中吗?

从安全性方面来看,这是一个好方法吗?

1 个答案:

答案 0 :(得分:0)

所有会话数据都保存在服务器上,因此您可以在那里放置任何内容。浏览器用户通过cookie中的sessionId与会话相关联(根据请求按容器查找)。当用户连接到服务器时,会使用sessionId在浏览器上删除cookie。返回后,浏览器会返回此sessionId,以便您可以查找会话(通常是Map)以跟踪与用户及其当前会话关联的数据。会话cookie可以设置为在浏览器关闭时保持不变,或者在浏览器关闭时或在一定时间后过期。

在会话中存储身份验证令牌很好,但如果浏览器不支持或不存储cookie,您将无法找到基于存储在其中的身份验证令牌的会话。如果用户没有cookie(可能是调用URL的自定义应用程序),则应向URL添加auth-token,以便用户仅在每个会话中登录一次。在这种情况下,您将创建一个包含会话数据的数据存储,并将来自浏览器和auth令牌的sessionId关联到相同的数据。这就是我过去做过移动/ web / api会话数据管理的方式。

你想解决什么问题?