我希望在我的webapp中改为create-session="stateless"
将是实现无状态Spring安全的最后一步,但事实并非如此。
有了这个变化,Spring安全性似乎不起作用,因为(我的假设)Spring安全性不会在会话中存储任何内容,也不能对安全的Web请求进行身份验证。
如何利用这个无状态特性?
对于如何实现无状态webapp的无状态Spring安全性,我似乎还找不到任何相关的例子。
谢谢您!
最佳答案
我有一个基于Spring的webapp,它具有完全无状态的安全性,唯一的方法就是完全禁用会话创建(使用create-session="never"
)。这将强制对每个请求进行重新身份验证,因此您还需要将webapp配置为使用http-basic-auth或digest-auth(当然是通过https),因为它们不需要特别复杂的协商(相反,基于表单的登录和OAuth都需要会话,因为它们具有e建立认证上下文的过程要复杂得多)。这意味着您需要将类似<security:http-basic />
的元素放入您的<security:http>
元素中。
(这样做的好处是它支持非常简单的客户端库,因为它们不必执行cookie/会话管理。成本是一些处理开销-建立用户参与的角色集,以及必须对每个请求重新计算的角色集-以及您可以使用的身份验证机制的一些限制。)