我使用Spring和Apache CXF来创建REST Web服务应用程序.我正在使用x.509证书对用户进行身份验证,然后使用自定义授权服务来获取所有用户组和详细信息.我已经实现了一个自定义UserDetailsService,它提取用户信息并填充UserDetails对象.填充此对象的部分过程涉及对公司授权服务的请求.遗憾的是,授权服务是一个专有系统,但至少它们提供了一个Java API.除其他外,授权服务返回用户所属的组列表.
我还处于开发阶段,但到目前为止我的观察结果似乎表明UserDetailsService在初始连接时被调用一次.然后,每个请求都使用缓存的授权对象.
所以我的问题和潜在的问题是这样的…公司政策规定,只允许应用程序在一段时间内缓存用户授权详细信息.那么,Spring在刷新它们之前将这些UserDetails对象缓存了多长时间?而且,我如何控制此缓存时间以确保我遵守策略?
解决方法:
提交了类似于此请求的票证:
> https://jira.springsource.org/browse/SEC-898
故障单中的建议是创建自己的过滤器,而不是定期将Authentication.setAuthenticated属性设置为false,从而强制查找用户.您可以通过设置较小的会话超时来实现相同的目的