java - 使用过滤器共享登录主题
问题描述
我在当前支持表单身份验证的应用程序中实现单点登录。我使用 shiro 作为安全框架。
我有一个 servlet,它接收 saml 断言并在用户中记录如下:
Subject subject = SecurityUtils.getSubject();
subject.login(new SAMLToken(assertions));
主题认证成功,但是根据shiro规范,只在这个线程上。问题是我有一个在不同线程上运行的身份验证过滤器,我希望该主题也在该线程上进行身份验证。
有可能实现这一目标吗?谢谢!
解决方案
您可能会创建一个过滤器(类似于其中之一),在其中将入站请求转换为您的 SAML 令牌。所有会话管理(和login()
呼叫)都将为您处理。
例如对于基本身份验证,从请求标头创建一个令牌:
推荐阅读
- reactjs - 如何将新对象插入数组对象?
- python - Python 使用请求从 API 获取数据失败
- python - Kivy 中的滚动视图不滚动,如何解决这个问题?
- seaborn - 有什么办法可以改变seaborn的传说吗?
- python-3.x - 尝试检测是否播放了特定的声音
- r - 如何替换数据表中值的单个组件?
- javascript - 如何清理文件上传路径节点js
- selenium - 为什么发送到文本框的值在 Web 应用程序中消失了
- android - 在 Firebase ui 上的 ONCE 上从 recyclerview 中删除所有项目
- blazor - Blazor 客户端没有 asp.net 托管,如何为 SPA 设置 Web 配置文件,这样我就不必使用 iis