问题标签 [spring-session]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
609 浏览

spring - Spring Session 存储库列表全部

在我的项目中,我需要比我一开始想的更多的会话管理。我需要的主要功能是列出(或每个)已识别主体的所有会话(例如删除/使他的所有会话 ID 无效)。SessionsRegistry由于分布式系统,我不想使用。

所以两个问题:

  1. 如何在 Spring-Session 中列出会话 ID(我是否需要自定义实现)?
  2. 有没有办法设置会话超时,它不是请求之间的间隔,而是最大会话时间寿命?

这种功能的典型用例是通过阻止恶意用户的帐户并使他在服务器上的所有会话无效来防止恶意用户继续他的活动。

0 投票
1 回答
1740 浏览

java - 在多个服务器上使用 Spring Security 和 Spring Redis Session

我有一个 spring 项目,并且刚刚添加了带有 redis 数据存储的 spring session 来保存 session 对象。它已经将 sring 安全用于页面权限等。导入已更新为使用 spring 4.1.6。和安全 4.0.1。

它目前正在使用基于 xml 的配置。我已经设置,所以 spring session 过滤器在 spring security filter 之前

进入登录页面后,正如预期的那样,有一个 cookie。一个新的“会话”cookie,与 redis 中的 cookie 相关联。但是在登录时,会创建原始的 JSESSIONID cookie,这不会保留在 redis 数据库中。此 cookie 是必需的,就像我将其设置为“无状态”一样,系统不会登录。

这意味着在 UI 的多个实例上,服务器之间将存在不同的安全会话,从而使 redis 数据存储变得冗余。

我目前不确定是否需要 JSESSIONID,因为登录时大多数字段都放在 SESSION 中。在检索用户等时使用正确的 SESSION cookie,并且相同的 cookie 用于保存信息。除了出于安全原因之外,是否有人能够解释它的必要性。

有没有办法将 JSESSIONID 也保存在数据库中,或者将安全会话中的信息额外保存在正常的 SESSION cookie 中。

0 投票
3 回答
5146 浏览

spring-security - 使用 spring-session 和 spring-cloud-security 时,OAuth2ClientContext (spring-security-oauth2) 不会保留在 Redis 中

非常感谢您阅读此问题。

设置

我在用:

  • spring-security-oauth2:2.0.7.RELEASE
  • spring-cloud-security:1.0.1.RELEASE
  • spring-session:1.0.1.RELEASE

并且在单点登录 ( )、反向代理 ( ) 网关中使用(via )spring-security-oauth2 OAuth2ClientContext时,会对 Redis 数据存储中的持久性有疑问。spring-session@EnableRedisHttpSession@EnableOAuth2Sso@EnableZuulProxy

问题

在我看来,创建的SessionScopedJdkDynamicAopProxied没有正确地保存在 Redis 数据存储中。DefaultOAuth2ClientContextorg.springframework.cloud.security.oauth2.client.OAuth2ClientAutoConfiguration

调试oauth2ClientContextwithout的创建@EnableRedisHttpSession表明(如预期的那样)bean 将在每个客户端会话中实例化一次并存储在HttpSession. bearerToken除了将 OAuth2 存储在accessTokenSpringSecurityContextorg.springframework.security.core.Authentication.

但是,一旦使用@EnableRedisHttpSessionoauth2ClientContextbean 将首先在会话创建时创建,稍后也会创建(同时仍使用相同的客户端会话)。调试 Redis 客户端会话内容确认oauth2ClientContext会话创建未正确持久化:

在我们检索 OAuth2 bearerToken(NO SpringContext, NO scopedTarget.oauth2ClientContext) 之前:

在我们检索到 OAuth2 之后bearerToken(SpringContext 持续存在,但 NO scopedTarget.oauth2ClientContext):

如果我们现在尝试访问配置器Zuul的一个路由(因此需要调用org.springframework.security.oauth2.client.DefaultOAuth2ClientContext#getAccessToken),将创建另一个实例oauth2ClientContext(因为没有在 Redis 中持久化,使用null AccessToken.

有趣的是,这个实例稍后会被持久化在 Redis 中(但是一个null实例是持久化的,因为AccessToken它没有被重新请求):

创建一个简单ScopedProxyMode.TARGET_CLASS注入的 bean 按预期工作,但是 bean 在 Redis 中正确持久化。

例子

通过添加以下依赖项,可以在OAuth2 反向代理网关的@dave-syer 示例中重现所描述的问题:

以及UiApplication@EnableRedisHttpSession中的注释。

问题

我们是否应该忽略org.springframework.cloud.security.oauth2.client.OAuth2ClientAutoConfiguration AutoConfiguration 并手动创建oauth2ClientContext一个不同的设置以spring-session在 Redis 中启用持久性?如果是这样,你能举个例子吗?

否则:如何oauth2ClientContext在 Redis 中持久化?

提前向任何阅读此问题的人提供帮助。

0 投票
2 回答
4817 浏览

redis - 连接 Spring Session 和 Redis 时无法创建 springSessionRepositoryFilter

以下是对我有用的配置,我创建了 spring-data-redis.xml 并将其包含到 applicationContext.xml

然后以下是我的 web.xml 的开始

Bellow是我之前遇到的问题......

我想在 Wildfly 上使用 Redis 进行会话,我们正在使用 Spring Security,因此我试图用 Spring 会话替换 Http 会话。我在此链接上关注手册:http: //docs.spring.io/spring-session/docs/current/reference/html5/guides/security.html 在我解决了所有依赖项之后,遇到了以下异常。通过 XML 或 Java 进行的两种配置最终都会出现相同的错误。任何想法?

0 投票
2 回答
1525 浏览

java - Spring Security 3.2.5 - 并发登录

经过多天的研究,我放弃了,我唯一的希望是在这里我能找到我的帮助。

我有我的应用程序,登录部分是手动使用 Spring 4 和 Spring Security 3.2.5。现在我需要控制登录并发,但不起作用。

我的代码:

弹簧安全.xml

web.xml

Java 登录

0 投票
1 回答
4322 浏览

spring - 无法使用 Redis 和 Spring 找到默认的 ScheduledExecutorService bean

我刚刚使用 Spring Session 和 Redis 开发了一个配置,一切正常,但是在我的控制台日志中,我得到了

如何配置 ScheduledExecutorService bean?

更新 :

0 投票
1 回答
300 浏览

spring - 在 REST 环境中使用 Spring Session/Security 时如何使用`with(user(`

SecurityMockMvcRequestPostProcessors.user使用 Spring Session with 时是否可以填充测试用户HeaderHttpSessionStrategy

我试过类似的东西:

但它返回一个 403。没有with(user(我得到一个 401,所以有区别。

我有一个失败的简单SecurityConfig包含:

我与https://github.com/spring-projects/spring-session/tree/1.0.1.RELEASE/samples/rest非常相似,因为我有一个端点,我使用 http basic 进行身份验证。它通过标头返回身份验证令牌,然后在其他 REST 调用中使用该令牌。

所以我希望我可以with(user(在这种情况下使用 来简化我的测试。

0 投票
1 回答
194 浏览

spring - 我可以将 Spring-session 用于我的旧非 Spring 项目吗

我已经有旧的 JSP 项目,但我想利用 spring-session 特别是 SSO。我不想将我的旧项目转换为完全“春季”版本,因为我的团队需要付出很多努力。

使用 java config 和 spring 项目进行配置并不难。任何人都可以对我的旧 JSP 项目进行演练吗?

0 投票
0 回答
492 浏览

java - Spring HeaderHttpSessionStrategy 和 WebSockets

在我当前的项目中,我在另一台服务器上安装了前端(单页应用程序)而不是后端。我们决定使用 Spring Session 来HeaderHttpSessionStrategy进行基于令牌的身份验证。我们要添加的最后一个功能是具有@SendToUser功能的 websockets,并且出现了一个楼梯。

由于安全原因,使用当前版本的 SockJS 无法将令牌标头添加到握手步骤。我尝试了一些通过 Stomp 标头发送令牌的方法,但没有成功。

我必须添加一个事实,即CookieHttpSessionStrategy(并且当前端由同一服务器提供时)没有问题,因为在握手步骤中浏览器会自动注入带有会话 ID 的 cookie。

是否有另一种方法可以在服务器端对用户进行身份验证并将其绑定到打开的 websocket?

0 投票
2 回答
1441 浏览

java - 从 Spring Session 中的 SessionDestroyedEvent 获取安全上下文

我正在使用 Spring Session 1.0.1。我需要在用户注销时执行一些逻辑,并且我需要依靠 HTTP 会话被无效来覆盖用户无法显式注销的情况。

标准 Spring Security SessionDestroyedEvent 包括任何适用的 SecurityContext,但 SessionDestroyedEvent 的 Spring Session 版本仅包含会话 ID。到此事件触发时,会话不再由 SessionRepository 持有,因此无法通过 id 查找。

有没有办法使用 Spring Session 从过期会话中检索 SecurityContext?