仅将Apache Shiro Session用作请求范围的安全数据桶

时间:2013-11-20 11:56:22

标签: session shiro

我在后端RESTful Services中使用Shiro。我有效地禁用了会话管理,因为我希望我们的服务是无状态的,并在每个请求中进行身份验证和授权。 但是现在我有以下要求:在我的Realm中发生的身份验证过程中,我转到SSO服务器并检索一些安全上下文数据,我需要它们在RESTful合同的每个Resource端点方法中都可用。最终开发人员可以使用这些数据来创建要检查的适当权限字符串。问题是,除了Session对象之外,我似乎找不到放置这些数据的适当位置。我的问题是:

1)。 Session对象是放置这些数据的唯一可行解决方案吗?我知道我可以出于这个原因使用一些自定义结构,但我真的更喜欢Shiro提供的东西并且逻辑上接近主题,以便最终开发人员知道这是我们正在讨论的“安全上下文数据” 。另一方面,我很高兴没有完全启用和使用Session的复杂性。 2)。在我的解决方案中,我在我的Realm实现的doGetAuthenticationInfo方法中执行SecurityUtils.getSubject()。getSession()。我把数据放在这个Session中。在Request的末尾,在我的Filter的afterCompletion()实现中,我执行以下命令:

Subject subject = ThreadContext.unbindSubject(); 
Session session = subject.getSession(false); 
if(session != null) session.stop(); 

基本上,我试图在Request-scoped方法中使用Session。

这是一个很好的解决方法吗?我可以确定我的数据是否特定于主题(根据请求创建和删除)?你知道我还应该考虑什么吗?

0 个答案:

没有答案