4.2. JaasSecurityManagerService MBean
JaasSecurityManagerService MBean サービスはセキュリティマネージャを管理します。名前は Jaas で始まりますが、処理するセキュリティマネージャはその実装で JAAS を使用する必要はありません。名前は、デフォルトのセキュリティマネージャの実装が JaasSecurityManager であることに由来しています。JaasSecurityManagerService の主要な役割はセキュリティマネージャ実装を外在させることです。セキュリティマネージャの実装を変更するには、AuthenticationManager と RealmMapping インターフェースの別の実装を提供します。
	JaasSecurityManagerService の基本的な第 2 の役割は、JNDI javax.naming.spi.ObjectFactory 実装を提供し、JNDI 名からセキュリティマネージャへの実装マッピングにシンプルなコード不要の管理を実現することです。セキュリティを有効にするには、<security-domain> デプロイメント記述子の要素によるセキュリティマネージャの実装の JNDI 名を指定します。
	
		JNDI 名を指定する場合、使用するオブジェクトバインディングがなければなりません。セキュリティマネージャのバインディングに対する JNDI 名の設定を簡略化するには、次のネーミングシステム参照を 
java:/jaas という名前で JNDI ObjectFactory としてバインドすることで、JaasSecurityManagerService が名前へのセキュリティマネージャのインスタンスの関連付けを管理します。これにより <security-domain> 要素に対する値として java:/jaas/XYZ という形式の命名規則が許可されます。XYZ セキュリティドメインのセキュリティマネージャインスタンスは必要に応じて作成されます。
	
		ドメイン 
XYZ のセキュリティマネージャは、セキュリティドメインの名前を取るコンストラクタを使用して、SecurityManagerClassName 属性により指定されるクラスのインスタンスを作成することによって java:/jaas/XYZ バインディングに対する最初のルックアップで作成されます。
	重要
			Enterprise Application Platform 5.0 以前のバージョンでは 各 
<security-domain> デプロイメント記述子の要素のプレフィックス「java:/jaas」は、セキュリティドメインの JNDI 名をセキュリティマネージャのバインディングに適切にバインドするために必要でした。
		
			JBoss Enterprise Application Platform 5 では、
java:/jaas プレフィックスはセキュリティドメイン宣言には必要ありません。java:/jaas プレフィックスはなおサポートされており、後方互換性を保っています。
		
		例えば、次のコンテナセキュリティの設定スニペットを考えてみましょう。
	
		名前 
customer を検索すると、customer という名前のセキュリティドメインに関連したセキュリティマネージャのインスタンスが返されます。このセキュリティマネージャは AuthenticationManager と RealmMapping セキュリティインターフェースを実装し、JaasSecurityManagerServiceSecurityManagerClassName 属性により指定されるタイプとなります。
	JaasSecurityManagerService MBean はデフォルトでは標準 JBoss ディストリビューションで使用されるよう設定されており、多くの場合はデフォルト設定としてそのまま使用できます。JaasSecurityManagerService の設定可能な属性として以下が挙げられます。
	- SecurityManagerClassName
- セキュリティマネージャ実装を提供するクラス名です。実装はorg.jboss.security.AuthenticationManagerとorg.jboss.security.RealmMappingインターフェース両方に対応している必要があります。指定がない場合は、JAAS ベースのorg.jboss.security.plugins.JaasSecurityManagerにデフォルト設定されます。
- CallbackHandlerClassName
- JaasSecurityManagerにより使用される- javax.security.auth.callback.CallbackHandler実装を提供するクラス名です。- 注記 デフォルト実装 (- org.jboss.security.auth.callback.SecurityAssociationHandler) がニーズに合わない場合は、- JaasSecurityManagerにより使用されるハンドラを一時的に変更できます。ほとんどの実装ではデフォルトのハンドラで十分です。
- SecurityProxyFactoryClassName
- org.jboss.security.SecurityProxyFactory実装を提供するクラス名です。指定がない場合は、- org.jboss.security.SubjectSecurityProxyFactoryにデフォルト設定されます。
- AuthenticationCacheJndiName
- セキュリティ資格情報のキャッシュポリシーの場所を特定します。最初は <security-domain> ごとにCachePolicyインスタンスを返すことができるObjectFactory場所として扱われます。ドメインのCachePolicyを検索するときに、セキュリティドメインの名前をこの名前に追加します。これが失敗した場合は、場所はすべてのセキュリティドメインに対して単一のCachePolicyとして扱われます。デフォルトとして、時間制限を設けたキャッシュポリシーが使用されます。
- DefaultCacheTimeout
- デフォルトの時間制限が設けられたキャッシュポリシーのタイムアウトを秒単位で指定します。デフォルト値は 1800 秒 (30 分) です。タイムアウトに使用する値は、頻繁な認証動作と資格情報がセキュリティ情報ストアに対して同期していない可能性がある期間とのトレードオフです。セキュリティ資格情報のキャッシュを無効にしたい場合は、毎回認証が強制的に実行されるようこの値を 0 に設定します。AuthenticationCacheJndiNameがデフォルト値から変更されている場合は効果がありません。
- DefaultCacheResolution
- デフォルトの時間制限が設けられたキャッシュポリシー解決を秒単位で指定します。キャッシュの現在のタイムスタンプが更新される間隔を制御し、タイムアウトを有効にするためDefaultCacheTimeout未満になるようにします。デフォルトの解決は 60 秒 (1 分) です。これはAuthenticationCacheJndiNameがデフォルト値から変更されている場合は効果がありません。
- DefaultUnauthenticatedPrincipal
- 認証されていないユーザーが使用するプリンシパルを指定します。この設定により、認証されていないユーザーがデフォルトのパーミッションを設定することが可能になります。
JaasSecurityManagerService は数多くの役立つ動作をサポートします。これには、ランタイム時のセキュリティドメイン認証キャッシュのフラッシュ、セキュリティドメイン認証キャッシュのアクティブなユーザーの一覧取得、セキュリティマネージャインターフェースメソッドなどが含まれます。
	
		セキュリティドメイン認証キャッシュをフラッシュする機能を使用すると、基礎となるストアが更新され、ストアの状態を直ちに使用されるようにしたいときに、すべてのキャッシュされた資格情報をドロップすることができます。MBean 動作のシグネチャは 
public void flushAuthenticationCache(String securityDomain) です。
	
		これは次のコードスニペットを使用してプログラムによって呼び出すことが可能です。
	
		アクティブなユーザーの一覧を取得すると、失効していないセキュリティドメイン認証キャッシュの 
Principals キーのスナップショットを得ることができます。MBean 動作のシグネチャは public List getAuthenticationCachePrincipals(String securityDomain) です。
	
		これは次のコードスニペットを使用してプログラムによって呼び出すことが可能です。
	
		セキュリティマネージャには追加のアクセスメソッドがいくつかあります。
	
securityDomain 引数により名前が付いた関連するセキュリティドメインの対応する AuthenticationManager と RealmMapping インターフェースメソッドへのアクセスを提供します。