gpt4 book ai didi

java - 您可以在不使其无状态的情况下将 Spring Security 与 REST 服务一起使用吗?

转载 作者:行者123 更新时间:2023-11-30 07:52:35 25 4
gpt4 key购买 nike

根据文档, https://docs.spring.io/spring-security/site/docs/3.0.x/reference/technical-overview.html .我计划在我的 Web 应用程序中使用 Spring Security 来调用一些 REST Web 服务,是否有必要将 SessionCreationPloicy 设置为 STATELESS 作为这个例子, https://github.com/spring-projects/spring-boot/issues/2755 .Spring Security 在请求之间存储 SecurityContext(Session),但我们知道 REST 是无状态的,不使用 HTTP session 。

将 Spring Security 与调用 REST web 服务但未将其设置为无状态的应用程序一起使用会出现什么问题?

最佳答案

为了性能/可扩展性,REST 服务应该设置为无状态。如果不将安全链设置为无状态,Spring Security 和 servlet 容器可能会创建一个 session 。如果客户端在下一个请求中不使用此 session ,则会创建另一个 session 。第三个请求第三个 session ,依此类推。服务器将跟踪 session 直到超时(约 30 分钟)。如果有很多请求,这可能/将成为服务器的负担。

我见过没有设置无状态的示例,它们适用于低流量或重用 session ,但出于上述原因,我建议将 REST 服务显式设置为无状态。

另一个问题可能是 REST 通常禁用 CSRF 保护。通过允许创建 session ,系统可能容易受到 CSRF 攻击。

关于java - 您可以在不使其无状态的情况下将 Spring Security 与 REST 服务一起使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45666700/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com