ber*_*tie 16 spring spring-security
我希望create-session="stateless"在我的webapp中实现无状态弹簧安全性的最终目的是改变它,但事实并非如此.
随着这种变化,Spring安全性似乎无法正常工作,因为(我的假设)spring安全性不会在会话中存储任何内容,也无法对安全的Web请求进行身份验证.
我如何利用这种无状态功能?
我似乎还没有找到关于如何为无状态webapp实现无状态弹簧安全性的任何相关示例.
谢谢 !
Sha*_*eep 25
Donal的答案基本上是正确的,对于浏览器,您可能不希望使用无状态应用程序.
作为参考,create-session="stateless"如果您确实拥有无状态应用程序(如RESTful客户端),那么这是一个更好的选择.此选项是在Spring Security 3.1中引入的.这将避免增加Spring Security的基础设施的一部分,这使得利用会话(例如HttpSessionSecurityContextRepository,SessionManagementFilter,RequestCacheFilter),所以你得到一个精简的安装.
有了create-session="never",Spring Security将永远不会创建一个会话,但如果您的应用程序可以使用它.在实践中,许多用户甚至不知道他们正在创建会话,所以如果你真的不想要会话,那么这stateless是最好的选择.
Don*_*ows 22
我有一个基于Spring的webapp,它具有完全无状态的安全性,让它像这样工作的唯一方法是完全禁用会话创建(with create-session="never").这迫使每个请求重新进行身份验证,因此您还希望将webapp配置为使用HTTP Basic Auth或Digest Auth(当然是通过HTTPS),因为这些不需要特别复杂的协商(相比之下,形式基于登录和OAuth都需要会话,因为它们具有用于建立认证上下文的更复杂的过程.这意味着你将要把一个元素喜欢<security:http-basic />你的内部<security:http>元素.
(这样做的好处是它可以实现极其简单的客户端库,因为它们不必进行cookie /会话管理.成本是一些处理开销 - 建立用户参与的角色集合要在每个请求上重新计算 - 以及您可以使用哪些身份验证机制的一些限制.)
| 归档时间: |
|
| 查看次数: |
21549 次 |
| 最近记录: |