Session 仅将ApacheShiro会话用作安全数据的请求范围存储桶

Session 仅将ApacheShiro会话用作安全数据的请求范围存储桶,session,shiro,Session,Shiro,我在后端RESTful服务中使用Shiro。我实际上禁用了会话管理,因为我希望我们的服务是无状态的,并在每个请求中进行身份验证和授权。 但是现在我有以下要求:在我的领域中发生的身份验证过程中,我去一个SSO服务器并检索一些安全上下文数据,我需要它们在RESTful契约的每个资源端点方法中都可用。最终开发人员可以使用这些数据创建适当的权限字符串进行检查。问题是,除了会话对象之外,我似乎没有找到放置这些数据的合适位置。我的问题是: 1) 。会话对象是放置这些数据的唯一可行的解决方案吗?我知道出于这个

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

1) 。会话对象是放置这些数据的唯一可行的解决方案吗?我知道出于这个原因,我可以使用一些自定义结构,但我真的更喜欢Shiro提供的、逻辑上接近主题的内容,以便最终开发人员知道这是我们正在讨论的“安全上下文数据”。另一方面,我很高兴没有完全启用和使用会话的复杂性。 2). 在我的解决方案中,我在领域实现的doGetAuthenticationInfo方法中执行SecurityUtils.getSubject().getSession()。我将数据放在这个会话中。在请求结束时,在过滤器的afterCompletion()实现中,我执行以下操作:

Subject subject = ThreadContext.unbindSubject(); 
Session session = subject.getSession(false); 
if(session != null) session.stop(); 
所以从本质上讲,我试图在请求范围的方法中使用会话

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