OAuth 用の動的キャッシュ・オブジェクト
WebSphere® Application Server OAuth サポートは、OAuth トークンおよびクライアント・パーシスタンス用の 2 つのオプション (メモリー内およびデータベース) を提供します。
メモリー内のクライアントおよびトークンの場合、クライアントはファイル・システムに維持され、トークンはメモリー内に残ります。 クライアントの追加や削除には MBean インターフェースが使用でき、クラスター内での変更は同期され、それらの変更はファイル・システムに維持されます。 動的キャッシュが指定されていない場合、トークンの管理は、動的キャッシュ・オブジェクトまたはローカルのメモリー内ハッシュ・マップを使用して行われます。
データベース実装では、動的キャッシュ・オブジェクトがクライアント表とトークン表の両方に対するデータベース・パーシスタンスのバックアップのためにも使用されます。 通常、データベースをバックアップするキャッシュは、最長未使用時間 (LRU) ポリシーに基づく弱いハッシュ・マップです。 キャッシュ内にデータがあればそのデータが使用されるので、よく使用されるデータに対するデータベース照会が回避され、パフォーマンスが向上します。 データベースに対して動的キャッシュが指定されていない場合は、代わりにローカルのメモリー内ハッシュ・マップが使用されます。
クラスター化されていない 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 という複製ドメインを使用するようにクラスター・ノードを構成する必要があります。 複製ドメインを設定する以外の追加構成は必要ありません。
拡張構成
複製ドメインはノードごとに 1 つずつしか指定することができません。 既に複製ドメインが構成されているクラスター・ノードの場合は、既存の複製ドメインの動的キャッシュ・オブジェクトを作成するために拡張構成が必要となります。 例えば、調整された動的キャッシュ・オブジェクトを使用している環境でキャッシュ・サイズを増やすためには、拡張構成も使用する必要があります。
- WebSphere Application Server 環境で動的キャッシュ・インスタンスを作成します。 個々のオプションについて詳しくは、動的キャッシュ・オブジェクトに関する既存の資料を参照してください。 先に示したデフォルト値をまず使用してみることができます。 複製ドメイン名が特に重要です。この名前は、既に複製ドメインが構成されている環境の複製ドメインと一致しなければなりません。
- 新しい動的キャッシュ・オブジェクトの Java™ Naming and Directory Interface (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 トークンが失効するまでは、OAuth トークンが失効するまでは、OAuth トークンを使用した他のノードでのアクセスは有効なままです。
また、トークンの取り消しを許可しない環境、またはトークンの存続期間中に限りトークンの不整合を受け入れることができる環境には、動的キャッシングを使用不可にする、あるいはキャッシュを無効化するためのオプションがあります。 動的キャッシングを使用不可にするとパフォーマンスはさらに向上しますが、代わりにアクセス時間が長くなります。