用于 OAuth 的动态高速缓存对象
WebSphere® Application Server OAuth 支持为 OAuth 令牌和客户机持久性提供了两个选项:内存中和数据库。
对于内存中客户机和令牌,客户机将持久保存到文件系统,而令牌将保留在内存中。MBean 接口可用于添加或移除客户机,这将使集群中的更改同步,并将更改持久保存到文件系统中。如果未指定动态高速缓存,那么将使用动态高速缓存对象或者本地内存中散列映射来管理令牌。
在数据库实现中,动态高速缓存对象还可用来支持客户机表和令牌表的数据库持久性。通常,支持数据库的高速缓存是基于最近使用频率最低的策略的弱散列映射。如果找到了高速缓存中的数据,那么将使用这些数据,这可以避免对常用数据进行数据库查询并提高性能。如果没有为数据库指定动态高速缓存,那么将改为使用本地内存中散列映射。
对于未建立集群的 OAuth 环境,不需要动态高速缓存配置。
缺省值
动态高速缓存对象高度可配置和可调整以获取最佳性能。缺省情况下,在大多数环境中,OAuth 服务将创建具有合理的缺省值的动态高速缓存实例。
cache.instance.0=/services/cache/OAuth20MemTokenCache
cache.instance.0.cacheSize=1000
cache.instance.0.enableDiskOffload=true
cache.instance.0.flushToDiskOnStop=true
cache.instance.0.useListenerContext=false
cache.instance.0.enableCacheReplication=true
cache.instance.0.replicationDomain=DynaCacheCluster
cache.instance.1=/services/cache/OAuth20MemTokenOwnerCache
cache.instance.1.cacheSize=1000
cache.instance.1.enableDiskOffload=true
cache.instance.1.flushToDiskOnStop=true
cache.instance.1.useListenerContext=false
cache.instance.1.enableCacheReplication=true
cache.instance.1.replicationDomain=DynaCacheCluster
cache.instance.2=/services/cache/OAuth20DBTokenCache
cache.instance.2.cacheSize=1000
cache.instance.2.enableDiskOffload=false
cache.instance.2.flushToDiskOnStop=false
cache.instance.2.useListenerContext=false
cache.instance.2.enableCacheReplication=true
cache.instance.2.replicationDomain=DynaCacheCluster
cache.instance.3=/services/cache/OAuth20DBClientCache
cache.instance.3.cacheSize=1000
cache.instance.3.enableDiskOffload=false
cache.instance.3.flushToDiskOnStop=false
cache.instance.3.useListenerContext=false
cache.instance.3.enableCacheReplication=true
cache.instance.3.replicationDomain=DynaCacheCluster
为了在集群中正确使用这些高速缓存,必须将集群节点配置为使用名为 DynaCacheCluster 的复制域。除了设置复制域之外,不需要其他配置。
高级配置
每个节点只能指定一个复制域。任何已经配置了复制域的集群节点都需要高级配置,才能为现有复制域创建动态高速缓存对象。使用已调整的动态高速缓存对象的环境(例如,为了扩展高速缓存大小)也必须使用高级配置。
- 在 WebSphere Application Server 环境中创建动态高速缓存实例。请参阅有关动态高速缓存对象的现有文档,以了解有关特定选项的详情。可以从先前所显示的缺省值来开始了解。复制域名称尤其重要,因为它必须与已经配置了复制域的环境的复制域相匹配。
- 修改新的动态高速缓存对象的 Java™ 命名和目录接口 (JNDI) 名称的 OAuth 提供者配置设置。
- 如果使用内存中持久性,那么参数名称为:
和oauth20.token.cache.jndi.tokens
oauth20.token.cache.jndi.users
- 如果使用数据库持久性,那么参数名称为:
和oauth20.db.token.cache.jndi.tokens
oauth20.db.token.cache.jndi.clients
- 如果使用内存中持久性,那么参数名称为:
如果不正确地配置了动态高速缓存对象,那么会将它们替换为本地内存中散列映射。散列映射提高了性能,但是未在集群中的节点之间复制数据。这对于使高速缓存失效而言很重要。例如,如果用户在不正确配置的环境中撤销其 OAuth 令牌,那么这些用户通过在其他节点上使用其 OAuth 令牌仍可获得访问权,直到令牌到期为止。
对于不允许撤销令牌的环境,或者可以容许令牌在令牌有效期内不一致的环境,还可以选择禁用动态高速缓存或者使高速缓存失效。禁用动态高速缓存可以进一步提高性能,但是会使得访问时间段更长。