【问题标题】:Spring Security Using X.509 Authentication and Periodically Updating Authorization UserDetailsSpring Security 使用 X.509 认证并定期更新授权 UserDetails
【发布时间】:2012-05-05 13:31:37
【问题描述】:

我使用 Spring 和 Apache CXF 创建了一个 REST Web 服务应用程序。我使用 x.509 证书对用户进行身份验证,然后使用自定义授权服务来获取所有用户组和详细信息。我已经实现了一个自定义 UserDetailsS​​ervice,它可以提取用户信息并填充一个 UserDetails 对象。填充此对象的部分过程涉及对公司授权服务的请求。不幸的是,授权服务是一个专有系统,但至少它们提供了 Java API。授权服务会返回用户所属的组列表。

我仍处于开发阶段,但到目前为止我的观察似乎表明 UserDetailsS​​ervice 在初始连接时被调用一次。然后每个请求都使用一个缓存的授权对象。

所以我的问题和潜在问题是......公司政策规定,应用程序只能在一段时间内缓存用户授权详细信息。那么,Spring 会在刷新这些 UserDetails 对象之前将它们缓存多久?而且,我如何控制这个缓存时间以确保我遵守政策?

【问题讨论】:

    标签: spring spring-security authorization cxf x509


    【解决方案1】:

    有一个类似此请求的请求提交:

    票证中的建议是创建自己的过滤器,而不是定期将 Authentication.setAuthenticated 属性设置为 false,从而强制查找用户。您也许可以通过设置较小的会话超时来实现同样的效果

    【讨论】:

    • 感谢您的提示。我修改了 UserDetailsS​​ervice 的实现以使用 EhCacheBasedUserCache 并将 TTL 属性设置为适当的过期值。这解决了问题的一部分,不再需要经常咨询授权服务。如帖子中所述,我还想实现一个过滤器,以定期检查用户会话并在需要时使它们过期。关于从哪里开始的任何提示?我以前从未创建过自定义过滤器。谢谢!
    • 我根据另一个帖子的答案找出了问题的另一部分:stackoverflow.com/q/10322026/1354698
    猜你喜欢
    • 2014-11-04
    • 2014-04-02
    • 2013-05-03
    • 1970-01-01
    • 1970-01-01
    • 2018-02-03
    • 2011-11-10
    • 2015-12-12
    • 2015-07-17
    相关资源
    最近更新 更多