4.2. JaasSecurityManagerService MBean


JaasSecurityManagerService MBean サービスはセキュリティマネージャを管理します。名前は Jaas で始まりますが、処理するセキュリティマネージャはその実装で JAAS を使用する必要はありません。名前は、デフォルトのセキュリティマネージャの実装が JaasSecurityManager であることに由来しています。JaasSecurityManagerService の主要な役割はセキュリティマネージャ実装を外在させることです。セキュリティマネージャの実装を変更するには、AuthenticationManagerRealmMapping インターフェースの別の実装を提供します。
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 プレフィックスはなおサポートされており、後方互換性を保っています。
例えば、次のコンテナセキュリティの設定スニペットを考えてみましょう。
<jboss>
    <!-- Configure all containers to be secured under the "customer" security domain -->
    <security-domain>customer</security-domain>
    <!-- ... -->
</jboss>
Copy to Clipboard Toggle word wrap
名前 customer を検索すると、customer という名前のセキュリティドメインに関連したセキュリティマネージャのインスタンスが返されます。このセキュリティマネージャは AuthenticationManager と RealmMapping セキュリティインターフェースを実装し、JaasSecurityManagerServiceSecurityManagerClassName 属性により指定されるタイプとなります。
JaasSecurityManagerService MBean はデフォルトでは標準 JBoss ディストリビューションで使用されるよう設定されており、多くの場合はデフォルト設定としてそのまま使用できます。JaasSecurityManagerService の設定可能な属性として以下が挙げられます。
SecurityManagerClassName
セキュリティマネージャ実装を提供するクラス名です。実装は org.jboss.security.AuthenticationManagerorg.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) です。
これは次のコードスニペットを使用してプログラムによって呼び出すことが可能です。
MBeanServer server = ...;
String jaasMgrName = "jboss.security:service=JaasSecurityManager";
ObjectName jaasMgr = new ObjectName(jaasMgrName);
Object[] params = {domainName};
String[] signature = {"java.lang.String"};
server.invoke(jaasMgr, "flushAuthenticationCache", params, signature);
Copy to Clipboard Toggle word wrap
アクティブなユーザーの一覧を取得すると、失効していないセキュリティドメイン認証キャッシュの Principals キーのスナップショットを得ることができます。MBean 動作のシグネチャは public List getAuthenticationCachePrincipals(String securityDomain) です。
これは次のコードスニペットを使用してプログラムによって呼び出すことが可能です。
MBeanServer server = ...;
String jaasMgrName = "jboss.security:service=JaasSecurityManager";
ObjectName jaasMgr = new ObjectName(jaasMgrName);
Object[] params = {domainName};
String[] signature = {"java.lang.String"};
List users = (List) server.invoke(jaasMgr, "getAuthenticationCachePrincipals", 
                                  params, signature);
Copy to Clipboard Toggle word wrap
セキュリティマネージャには追加のアクセスメソッドがいくつかあります。
public boolean isValid(String securityDomain, Principal principal, Object credential);
public Principal getPrincipal(String securityDomain, Principal principal);
public boolean doesUserHaveRole(String securityDomain, Principal principal, 
                                Object credential, Set roles);
public Set getUserRoles(String securityDomain, Principal principal, Object credential);
Copy to Clipboard Toggle word wrap
securityDomain 引数により名前が付いた関連するセキュリティドメインの対応する AuthenticationManagerRealmMapping インターフェースメソッドへのアクセスを提供します。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat