默认情况下,CAS仅在登录时查询属性,并为整个SSO会话缓存它们。 我正在使用OAuth 2.0端点(/oauth2.0/profile)来获取当前用户的属性。 这些属性存储在数据库中并使用JDBC进行检索(CAS使用cas.authn.attributeRepository.jdbc [0] .x.y.z配置属性)。
是否可以关闭缓存?每当有人访问/oauth2.0/profile端点时,我想查询它们。
CAS Version 5.2.0
答案 0 :(得分:0)
参考: https://apereo.github.io/cas/5.2.x/integration/Attribute-Release-Caching.html
默认情况下,已解析的属性会缓存到SSO会话的长度。如果自SSO会话开始以来有任何属性值更改,则更改不会反映并在发布时返回给服务。
CAS Principal和底层属性存储库源之间的关系,它描述了应该缓存CAS Principal属性的方式和长度,由属性存储库控制。在属性释放时,根据缓存过期策略,查询此组件以确保将适当的属性值释放到作用域服务。如果过期策略已通过,将查询基础属性存储库源以确定可用的属性集。
此组件还能够解决现有主要属性与通过mergeStrategy属性从存储库源检索的属性之间的冲突。如果要保留在身份验证事件期间从其他位置检索的主体可用的属性集合等,这将非常有用。
此外,可以通过以下方式控制全局缓存策略:
# cas.authn.attributeRepository.expireInMinutes=30
# cas.authn.attributeRepository.maximumCacheSize=10000
# cas.authn.attributeRepository.merger=REPLACE|ADD|MERGE
以上说明描述了属性的一般缓存策略。不确定它们是否对OAuth配置文件具有相同的效果,但这些都是一个良好的开端。