1.9. セキュアなキャッシュを使用したコード実行
Data Grid 承認を設定して DefaultCacheManager を構築すると、基礎となるキャッシュで操作を呼び出す前にセキュリティーコンテキストを確認する SecureCache を返します。また、SecureCache は、アプリケーションが DataContainer などの低レベルの非セキュアなオブジェクトを取得できないようにします。このため、必要な承認を持つアイデンティティーでコードを実行する必要があります。
Java で特定のアイデンティティーでコードを実行すると、通常、以下のように PrivilegedAction 内で実行されるコードをラップします。
Java 8 を使用すると、以下のように前述の呼び出しを簡素化できます。
Security.doAs(mySubject, PrivilegedAction<String>() -> cache.put("key", "value"));
Security.doAs(mySubject, PrivilegedAction<String>() -> cache.put("key", "value"));
上記の呼び出しは、Subject.doAs() の代わりに Security.doAs() メソッドを使用します。Data Grid でどちらのメソッドも使用できますが、Security.doAs() によりパフォーマンスが向上します。
現在の Subject が必要な場合は、以下の呼び出しを使用して Data Grid コンテキストまたは AccessControlContext から取得します。
Security.getSubject();
Security.getSubject();