spring-security - 在 CloudFoundry 上使用 Spring Security 的 HttpSessionSecurityContextRepository 是否存在问题?

标签 spring-security cloud-foundry httpsession session-replication

我明白 Spring 安全 HttpSessionSecurityContextRepository使用 HttpSession .

此外,我已经读到诸如 CloudFoundry 之类的 PaaS 试图避免 session 复制以实现可扩展性。

我打算将应用程序部署到 CloudFoundry PaaS .

使用 HttpSessionSecurityContextRepository 有问题吗?在CF上?

最佳答案

CloudFoundry 文档只是说默认情况下不会跨实例复制 HTTP session 。所有这一切意味着,默认情况下,部署在多个实例上的应用程序将无法使用任何类型的 HTTP session 集群。 HTTP session 变得粘滞,即同一 session 中的所有 HTTP 请求都将路由到该请求的 session 所在的实例。如果一个实例失败,在该实例上有事件 session 的用户将被迁移到其他实例,但他们将丢失他们的 session 信息,这意味着他们将不得不再次登录。

这并不意味着在这样的环境中使用 Spring Security 是不安全的。 Spring Security 的语义将与没有它的相同。用户登录后,他们将继续访问创建其 session 的 CloudFoundry 实例。如果该实例崩溃,它们将自动移植到另一个实例,但必须再次登录。

如果默认设置(没有 session 复制)是一个问题,那么跨实例共享 session 当然是可能的。 CloudFoundry 论坛列出了实现此目的的两种方法 - via Redisusing JDBC .也可以使用 CloudFoundry 服务之一来实现您自己的解决方案。

关于spring-security - 在 CloudFoundry 上使用 Spring Security 的 HttpSessionSecurityContextRepository 是否存在问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18640314/

相关文章:

使用 Spring Boot 项目时,JSP 文件未部署到 Pivotal Web Services

java - 我可以使用 session 作用域 bean 而不是 httpsession 来维护 session 吗

java - 从 Java Web 应用程序内存中清理无效 session 的简单方法

java - org.springframework.security.authentication.InternalAuthenticationServiceException : Could not get JDBC Connection

spring-security - Spring Boot + Security + Thymeleaf 和 CSRF token 未自动注入(inject)

cloud - Cloud Foundry 内存限制如何运作?

java - 如何在 session 中设置值?

java - 单页应用。模板管理的安全性

java - Spring framework : HTTP OPTIONS returning all METHODS (get, put, post, delete, trace, head, options)

ibm-cloud - 在 Bluemix 上删除了应用程序,但重新创建时名称不可用