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 환경에서 동적 캐시 인스턴스를 작성하십시오. 특정 옵션에 대한 세부사항에 대해서는 동적 캐시 오브젝트에 대한 기존 문서를 참조하십시오. 이전에 표시된 기본값을 사용하여 시작할 수 있습니다. 복제 도메인 이름은 복제 도메인이 이미 구성된 환경에 대한 복제 도메인과 일치해야 하므로 특히 중요합니다.
- 새 동적 캐시 오브젝트의 JNDI(Java™ Naming and Directory Interface) 이름에
대한 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 토큰을 사용하여 여전히 액세스할 수 있습니다.
토큰 취소를 허용하지 않는 환경이나 토큰 수명 동안 토큰 불일치를 수용할 수 있는 환경은 동적 캐싱 사용 안함 또는 캐시 무효화 옵션을 갖고 있습니다. 동적 캐시를 사용 안함으로 설정하면 액세스 창이 더 길어지는 대신 성능이 더욱 증가하게 됩니다.