eDocs ホーム >
BEA WebLogic Server 9.0 ドキュメント >
JMX によるカスタム管理ユーティリティの開発
> JMX を使用したセキュリティ レルムの管理
JMX によるカスタム管理ユーティリティの開発
JMX を使用したセキュリティ レルムの管理
セキュリティ レルムは、WebLogic リソースを保護する複数のメカニズムで構成されています。各セキュリティ レルムは、コンフィグレーションされた一連のセキュリティ プロバイダから成ります。セキュリティ プロバイダは、セキュリティの特定の側面を扱うモジュール形式のコンポーネントです。レルム内のプロバイダを使用する JMX クライアントを作成して、ユーザやグループなどのセキュリティ データを追加または削除できます。プロバイダを追加または削除したり、レルム コンフィグレーションにその他の変更を加えたりするクライアントを作成することもできます。
以下の節では、JMX を使用したセキュリティ レルムの管理について説明します。
WebLogic セキュリティの詳細については、『WebLogic Security について』を参照してください。
セキュリティ MBean の階層について
他のサブシステムと同様に、WebLogic Server セキュリティ フレームワークでは MBean を 1 つの階層にまとめます。JMX クライアントは JMX オブジェクト名を作成せずに、その階層内を移動できます。ただし、セキュリティ レルムで使用できる MBean タイプは、レルムにインストールされたセキュリティ プロバイダによって異なり、各セキュリティ プロバイダで利用できるサービスは、プロバイダの作成方法によって異なります。
セキュリティ レルム階層のルートは RealmMBean
です。ルートには、そのレルムでコンフィグレーションされたすべてのプロバイダが含まれています。たとえば、Authorizers
属性には、レルムでコンフィグレーションされているすべての認可プロバイダが含まれています。WebLogic Server にはデフォルトのセキュリティ プロバイダが用意されているので、RealmMBean
Authorizers
にはデフォルトで DefaultAuthorizerMBean
が含まれています。ただし、これらのデフォルト プロバイダを削除し、任意の数の独自のプロバイダまたはサードパーティのプロバイダで置き換えることができます。デフォルト セキュリティ プロバイダの詳細については、『WebLogic Server のセキュリティ』の「WebLogic セキュリティ プロバイダのコンフィグレーション」および「認証プロバイダのコンフィグレーション」を参照してください。
基本プロバイダ タイプと mix-in インタフェース
各セキュリティ プロバイダでは基本プロバイダ タイプを拡張する必要があります。たとえば、DefaultAuthorizerMBean
は AuthorizerMBean
を拡張しており、カスタムまたはサードパーティの認可プロバイダも AuthorizerMBean
を拡張します。JMX クライアントが RealmMBean
Authorizers
属性の値を取得する場合、MBean サーバは AuthorizerMBean
を拡張しているレルム内のすべての MBean を返します。JMX クライアントはプロバイダのリストを反復処理して、Name
属性の値や他の条件に基づいてプロバイダを選択できます。
省略可能な mix-in インタフェースを拡張して、基本プロバイダ タイプの機能を強化することができます。たとえば、認証プロバイダで UserEditorMBean
を拡張すると、プロバイダはレルムにユーザを追加できるようになります。
セキュリティ MBean
WebLogic Server のセキュリティ MBean はセキュリティ レルム内のセキュリティ プロバイダをコンフィグレーションします。以下の表では、さまざまなセキュリティ プロバイダをコンフィグレーションする MBean について説明します。
表 6-1 では、認証セキュリティ プロバイダをコンフィグレーションする MBean と、認証プロバイダで拡張する必要のある抽象 MBean クラスについて説明します。この表の MBean の他に、WebLogic Server にはデフォルトの各認証プロバイダ用のコンフィグレーション MBean があります。
表 6-2 では、認証セキュリティ プロバイダ以外のセキュリティ プロバイダをコンフィグレーションする MBean について説明します。
表 6-3 では、セキュリティ プロバイダが管理用にユーティリティとしてサポートできる、省略可能な MBean mixin インタフェースについて説明します。
WebLogic セキュリティ プロバイダのコンフィグレーションの詳細については、『WebLogic Server のセキュリティ』の「WebLogic セキュリティ プロバイダのコンフィグレーション」および「認証プロバイダのコンフィグレーション」を参照してください。図 6-1 では、コンフィグレーション MBean 階層内の MBean の位置を示します。
表 6-1 認証セキュリティ プロバイダの MBean
MBean
|
コンフィグレーションする対象
|
AuthenticationProviderMBean
|
認証プロバイダを管理するすべての MBean 実装の基本 MBean。認証プロバイダで WebLogic Security SSPI を使用してログイン サービスを提供する場合、その MBean は weblogic.management.security.authentication.Authenticator を拡張する必要がある。認証プロバイダで WebLogic Security SPI を使用して ID アサーション サービスを提供する場合、その MBean は weblogic.management.security.authentication.IdentityAsserter を拡張する必要がある。
『WebLogic Server MBean リファレンス』の「AuthenticationProviderMBean 」を参照。
|
AuthenticatorMBean
|
ログイン サービスを備えたすべての認証プロバイダが拡張する必要のある SSPI MBean。この MBean には、ログイン シーケンスにおける認証プロバイダの位置付け (REQUIRED、REQUISITE、SUFFICENT、または OPTIONAL) を決定する ControlFlag がある。
『WebLogic Server MBean リファレンス』の「AuthenticatorMBean 」を参照。
|
IdentityAsserterMBean
|
すべての ID アサーション プロバイダが拡張する必要のある SSPI MBean。この MBean を利用すると、ID アサーション プロバイダは、ID アサーションが可能なトークン タイプを指定できるようになる。
『WebLogic Server MBean リファレンス』の「IdentityAsserterMBean 」を参照。
|
ServletAuthenticationFilterMBean
|
すべてのサーブレット認証フィルタが拡張する必要のある SSPI MBean。この MBean は単なるマーカ インタフェース。メソッドは持たない。
『WebLogic Server MBean リファレンス』の「ServletAuthenticationFilterMBean 」を参照。
|
表 6-2 他のセキュリティ プロバイダの MBean
MBean
|
コンフィグレーションする対象
|
AdjudicatorMBean
|
すべての裁決プロバイダが拡張する必要のある SSPI MBean。
『WebLogic Server MBean リファレンス』の「AdjudicatorMBean 」を参照。
|
DefaultAdjudicatorMBean
|
WebLogic 裁決プロバイダのコンフィグレーション属性。
『WebLogic Server MBean リファレンス』の「DefaultAdjudicatorMBean 」を参照。
|
AuditorMBean
|
すべての監査プロバイダが拡張する必要のある SSPI MBean。
『WebLogic Server MBean リファレンス』の「AuditorMBean 」を参照。
|
DefaultAuditorMBean
|
WebLogic 監査プロバイダのコンフィグレーション属性。
『WebLogic Server MBean リファレンス』の「DefaultAuditorMBean 」を参照。
|
AuthorizerMBean
|
すべての認可プロバイダが拡張する必要のある SSPI MBean。
『WebLogic Server MBean リファレンス』の「AuthorizerMBean 」を参照。
|
DeployableAuthorizerMBean
|
Web アプリケーションまたは EJB のデプロイ時に作成されたポリシーを格納できる、すべての認可プロバイダが拡張する必要のある SSPI MBean。
『WebLogic Server MBean リファレンス』の「DeployableAuthorizerMBean 」を参照。
|
DefaultAuthorizerMBean
|
WebLogic 認可プロバイダのコンフィグレーション属性。
『WebLogic Server MBean リファレンス』の「DefaultAuthorizerMBean 」を参照。
|
CredentialMapperMBean
|
すべての資格マッピング プロバイダが拡張する必要のある SSPI MBean。
『WebLogic Server MBean リファレンス』の「CredentialMapperMBean 」を参照。
|
DeployableCredentialMapperMBean
|
コンポーネントのデプロイ時に作成された資格マップを格納できる、すべての資格マッピング プロバイダが拡張する必要のある SSPI MBean。
『WebLogic Server MBean リファレンス』の「DeployableCredentialMapperMBean 」を参照。
|
DefaultCredentialMapperMBean
|
WebLogic 資格マッピング プロバイダ (ユーザ名/パスワード資格マッピング プロバイダ) のコンフィグレーション属性。
『WebLogic Server MBean リファレンス』の「DefaultCredentialMapperMBean 」を参照。
|
PKICredentialMapperMBean
|
PKI 資格マッピング プロバイダ (キー ペア資格マッピング プロバイダ) のコンフィグレーション属性。
『WebLogic Server MBean リファレンス』の「PKICredentialMapperMBean 」を参照。
|
SAMLCredentialMapperMBean
|
SAML 資格マッピング プロバイダ (Security Assertion Markup Language 資格マッピング プロバイダ) のコンフィグレーション属性。
『WebLogic Server MBean リファレンス』の「SAMLCredentialMapperMBean 」を参照。
|
CertPathProviderMBean
|
すべての証明書パス プロバイダの基本 MBean。
『WebLogic Server MBean リファレンス』の「CertPathProviderMBean 」を参照。
|
CertPathBuilderMBean
|
CertPathBuilder サービスを備えたすべての証明書パス プロバイダが拡張する必要のある SSPI MBean。
『WebLogic Server MBean リファレンス』の「CertPathBuilderMBean 」を参照。
|
CertPathValidatorMBean
|
CertPathValidator サービスを備えたすべての証明書パス プロバイダが拡張する必要のある SSPI MBean。
『WebLogic Server MBean リファレンス』の「CertPathValidatorMBean 」を参照。
|
CertificateRegistryMBean
|
証明書レジストリをコンフィグレーションおよび管理する。これはビルダであり、検証プロバイダでもある。目的の証明書、目的の証明書のサブジェクト DN、発行者 DN とシリアル番号、およびサブジェクト キー識別子に基づいたビルドをサポートする。
『WebLogic Server MBean リファレンス』の「CertificateRegistryMBean 」を参照。
|
WebLogicCertPathProviderMBean
|
CertPathBuilder サービスを備えたすべての証明書パス プロバイダが拡張する必要のある SSPI MBean。
『WebLogic Server MBean リファレンス』の「WebLogicCertPathProviderMBean 」を参照。
|
RoleMapperMBean
|
ロール マッピング プロバイダの基本 MBean。デプロイできないモジュールのロール マッピング プロバイダは、この MBean を直接拡張する必要がある。デプロイできるモジュールのロール マッピング プロバイダは DeployableRoleMapperMBean を拡張する必要がある。
『WebLogic Server MBean リファレンス』の「RoleMapperMBean 」を参照。
|
DeployableRoleMapperMBean
|
Web アプリケーションまたは EJB のデプロイ時に作成されたロールを格納できる、すべてのロール マッピング プロバイダが拡張する必要のある SSPI MBean。
『WebLogic Server MBean リファレンス』の「DeployableRoleMapperMBean 」を参照。
|
DefaultRoleMapperMBean
|
WebLogic ロール マッピング プロバイダのコンフィグレーション属性。
『WebLogic Server MBean リファレンス』の「DefaultRoleMapperMBean 」を参照。
|
表 6-3 セキュリティ プロバイダの MBean mix-in インタフェース
MBean
|
コンフィグレーションする対象
|
ContextHandlerMBean
|
ContextHandler がサポートする一連の属性を提供する。監査プロバイダ MBean はこの MBean を必要に応じて実装できる。
『WebLogic Server MBean リファレンス』の「ContextHandlerMBean 」を参照。
|
GroupEditorMBean
|
グループを作成、編集、および削除するための一連のメソッドを提供する。認証プロバイダ MBean はこの MBean を必要に応じて実装できる。
『WebLogic Server MBean リファレンス』の「GroupEditorMBean 」を参照。
|
GroupMemberListerMBean
|
グループのメンバーをリストするためのメソッドを提供する。認証プロバイダ MBean はこの MBean を必要に応じて実装できる。
『WebLogic Server MBean リファレンス』の「GroupMemberListerMBean 」を参照。
|
GroupMembershipHierarchyCacheMBean
|
グループ メンバシップ階層のキャッシュをサポートするのに必要なコンフィグレーション属性を提供する。認証プロバイダ MBean はこの MBean を必要に応じて実装できる。
『WebLogic Server MBean リファレンス』の「GroupMembershipHierarchyCacheMBean 」を参照。
|
GroupReaderMBean
|
グループに関するデータを読み込むための一連のメソッドを提供する。認証プロバイダ MBean はこの MBean を必要に応じて実装できる。
『WebLogic Server MBean リファレンス』の「GroupReaderMBean 」を参照。
|
MemberGroupListerMBean
|
メンバーを含むグループをリストするためのメソッドを提供する。認証プロバイダ MBean はこの MBean を必要に応じて実装できる。
『WebLogic Server MBean リファレンス』の「MemberGroupListerMBean 」を参照。
|
UserEditorMBean
|
ユーザを作成、編集、および削除するための一連のメソッドを提供する。認証プロバイダ MBean はこの MBean を必要に応じて実装できる。
『WebLogic Server MBean リファレンス』の「UserEditorMBean 」を参照。
|
UserLockoutManagerMBean
|
ユーザ アカウントに対するロックアウトをリストおよび管理する。認証プロバイダ MBean はこの MBean を必要に応じて実装できる。
『WebLogic Server MBean リファレンス』の「UserLockoutManagerMBean 」を参照。
|
UserPasswordEditorMBean
|
ユーザのパスワードを変更するための 2 つのメソッドを提供する。認証プロバイダ MBean はこの MBean を必要に応じて実装できる。
『WebLogic Server MBean リファレンス』の「UserPasswordEditorMBean 」を参照。
|
UserReaderMBean
|
ユーザに関するデータを読み込むための一連のメソッドを提供する。認証プロバイダ MBean はこの MBean を必要に応じて実装できる。
『WebLogic Server MBean リファレンス』の「UserReaderMBean 」を参照。
|
UserRemoverMBean
|
ユーザを削除するためのメソッドを提供する。認証プロバイダ MBean はこの MBean を必要に応じて実装できる。
『WebLogic Server MBean リファレンス』の「UserRemoverMBean 」を参照。
|
RoleEditorMBean
|
ロールを作成、編集、および削除するための一連のメソッドを提供する。ロール マッピング プロバイダ MBean はこの MBean を必要に応じて実装できる。
『WebLogic Server MBean リファレンス』の「RoleEditorMBean 」を参照。
|
RoleListerMBean
|
ロールに関するデータをリストするための一連のメソッドを提供する。ロール マッピング プロバイダ MBean はこの MBean を必要に応じて実装できる。
『WebLogic Server MBean リファレンス』の「RoleListerMBean 」を参照。
|
RoleReaderMBean
|
ロールを読み込むための一連のメソッドを提供する。ロール マッピング プロバイダ MBean はこの MBean を必要に応じて実装できる。
『WebLogic Server MBean リファレンス』の「RoleReaderMBean 」を参照。
|
PolicyEditorMBean
|
ポリシーを作成、編集、および削除するための一連のメソッドを提供する。認可プロバイダ MBean はこの MBean を必要に応じて実装できる。
『WebLogic Server MBean リファレンス』の「PolicyEditorMBean 」を参照。
|
PolicyListerMBean
|
ポリシーに関するデータをリストするための一連のメソッドを提供する。認可プロバイダ MBean はこの MBean を必要に応じて実装できる。
『WebLogic Server MBean リファレンス』の「PolicyListerMBean 」を参照。
|
PolicyReaderMBean
|
ポリシーを読み込むための一連のメソッドを提供する。認可プロバイダ MBean はこの MBean を必要に応じて実装できる。
『WebLogic Server MBean リファレンス』の「PolicyReaderMBean 」を参照。
|
PKICredentialMapEditorMBean
|
ユーザ、リソース、および資格アクションを、キーストア エリアスおよび対応するパスワードに一致させる資格マップを作成、編集、削除するための一連のメソッドを提供する。PKICredentialMapping プロバイダ MBean はこの MBean を必要に応じて実装できる。
『WebLogic Server MBean リファレンス』の「PKICredentialMapEditorMBean 」を参照。
|
PKICredentialMapReaderMBean
|
ユーザおよびリソースを、キーストア エリアスおよび対応するパスワードに一致させる資格マップを読み込むための、一連のメソッドを提供する。その資格マップを使用して、コンフィグレーション済みのキーストアからキー情報やパブリック証明書情報を取得できる。PKICredentialMapping プロバイダ MBean はこの MBean を必要に応じて実装できる。
『WebLogic Server MBean リファレンス』の「PKICredentialMapReaderMBean 」を参照。
|
UserPasswordCredentialMapEditorMBean
|
WebLogic ユーザをリモート ユーザ名とその対応するパスワードに一致させる資格マップを作成、編集、削除するための一連のメソッドを提供する。資格マッピング プロバイダ MBean はこの MBean を必要に応じて拡張できる。
『WebLogic Server MBean リファレンス』の「UserPasswordCredentialMapEditorMBean 」を参照。
|
UserPasswordCredentialMapExtendedReaderMBean
|
資格と資格マッピングを読み込むための一連のメソッドを提供する。資格マッピングは WebLogic ユーザをリモート ユーザ名とパスワードに一致させる。資格マッピング プロバイダ MBean はこの MBean を必要に応じて拡張できる。
『WebLogic Server MBean リファレンス』の「UserPasswordCredentialMapExtendedReaderMBean 」を参照。
|
UserPasswordCredentialMapReaderMBean
|
資格と資格マッピングを読み込むための一連のメソッドを提供する。資格マッピングは WebLogic ユーザをリモート ユーザ名とパスワードに一致させる。資格マッピング プロバイダ MBean はこの MBean を必要に応じて拡張できる。
『WebLogic Server MBean リファレンス』の「UserPasswordCredentialMapReaderMBean 」を参照。
|
ImportMBean
|
プロバイダ固有のデータをインポートするための一連のメソッドを提供する。セキュリティ プロバイダが拡張できる省略可能な mix-in インタフェース。
『WebLogic Server MBean リファレンス』の「ImportMBean 」を参照。
|
ExportMBean
|
プロバイダ固有のデータをエクスポートするための一連のメソッドを提供する。セキュリティ プロバイダが拡張できる省略可能な mix-in インタフェース。
『WebLogic Server MBean リファレンス』の「ExportMBean 」を参照。
|
ListerMBean
|
リストを返すための一般的なメカニズムを提供する。派生する MBean はこのインタフェースを拡張して、リスト内の現在のオブジェクトのデータにアクセスするメソッドを追加する。セキュリティ プロバイダが拡張できる省略可能な mix-in インタフェース。
『WebLogic Server MBean リファレンス』の「ListerMBean 」を参照。
|
NameListerMBean
|
名前のリストを返すために使用するメソッドを定義している。セキュリティ プロバイダが拡張できる省略可能な mix-in インタフェース。
『WebLogic Server MBean リファレンス』の「NameListerMBean 」を参照。
|
LDAPServerMBean
|
外部 LDAP サーバへの接続に必要なコンフィグレーション パラメータを取得するメソッドを提供する。セキュリティ プロバイダが拡張できる省略可能な mix-in インタフェース。
『WebLogic Server MBean リファレンス』の「LDAPServerMBean 」を参照。
|
ApplicationVersionerMBean
|
バージョン管理可能なアプリケーションをサポートすることを示すために、セキュリティ プロバイダが拡張する SSPI MBean。RoleMapper、Authorizer、または CredentialMapper プロバイダ MBean が拡張できる省略可能な mix-in インタフェース。
『WebLogic Server MBean リファレンス』の「ApplicationVersionerMBean 」を参照。
|
図 6-1 セキュリティ MBean
既存のセキュリティ プロバイダの操作
セキュリティ プロバイダでは mix-in インタフェースを任意で拡張することができます。したがって、すべてのセキュリティ プロバイダがすべてのタスクを行えるわけではありません。このように柔軟性があるので、組織のセキュリティ設計者はセキュリティの要件に応じてレルムを設計できます。また、JMX クライアントの設計も、各レルムの設計やコンフィグレーションによって異なったものになります。
たとえば、次の 3 種類の認証プロバイダを含むレルムがあるとします。
管理ユーザを LDAP サーバに保存するために UserEditorMBean
を拡張した認証プロバイダ。
顧客をデータベース管理システムに保存するために UserEditorMBean
を拡張した認証プロバイダ。
UserEditorMBean
を拡張せず、既存のユーザを認証するためにのみ使用される認証プロバイダ。
このレルムの認証プロバイダを扱うには、JMX クライアントでは、適切なリポジトリにユーザを追加できるのはどの認証プロバイダかを判断できる必要があります。
表 6-4 では、タスクに適したセキュリティ プロバイダを検索する方法について説明します。
表 6-4 レルム内のプロバイダの検索
方法
|
説明
|
名前で検索する
|
管理者がレルムでコンフィグレーションするときに、各セキュリティ プロバイダ インスタンスには短い名前が割り当てられている。JMX クライアントは特定の種類 (認証プロバイダなど) のすべてのプロバイダをルックアップして、名前に一致するプロバイダを選択できる。
そのような JMX クライアントの例については、WebLogic Server examplesServer を起動する。examplesServer のホーム ページから、[Extending a Realm Using JMX] をクリックする。この JMX クライアントのソースは
WL_HOME /samples/server/medrec/src/medrecEar/ adminWebApp/WEB-INF/src/com/bea/medrec/ actions/CreateNewAdminAction.java としてインストールされている。
WL_HOME は、WebLogic Server のインストール先ディレクトリ。
この方法を使用する場合は、セキュリティ プロバイダの名前を、JMX クライアントにハードコード化するのではなく、コンフィグレーション ファイルに保存すること。コンフィグレーション ファイルを使用すると、システム管理者はレルム内のプロバイダを変更してプロパティ ファイルを更新できるので、JMX クライアントを更新して再コンパイルする必要がない。
|
MBean タイプで検索する
|
システム管理者が常に同じ種類のプロバイダをタスクに使用する場合、JMX クライアントはその特定の種類のプロバイダ MBean を検索できる。
たとえば、システム管理者が常に SQLAuthenticatorMBean を使用して顧客をレルムに追加する場合、JMX クライアントは SQLAuthenticatorMBean のインスタンスを検索することができる。
この方法ではユーザ入力は必要ないが、次のことが前提となる。
「使用可能なサービスの検索」を参照。
|
必要な mix-in インタフェースを拡張したプロバイダを使用する
|
各プロバイダ MBean インスタンスのクラス階層を認識し、タスクに必要な mix-in インタフェースを拡張しているインスタンスを選択する JMX クライアントを作成できる。たとえば、クライアントでは UserEditorMBean を拡張した認証プロバイダを検索できる。「使用可能なサービスの検索」を参照。
必要な mix-in インタフェースを拡張した MBean がレルム内に 1 つしかないことが分かっている場合、またはどの方法を使用してもかまわない場合に、この方法を使用する。
|
使用可能なサービスの検索
タイプまたは mix-in インタフェースで MBean を検索する JMX クライアントを作成するには、次の手順に従います。
すべての WebLogic Server インスタンスは独自の実行時 MBean サーバを保持しており、どのサーバの実行時 MBean サーバにも接続できます。
レルム内の特定のタイプのセキュリティ プロバイダ MBean (たとえば、認証プロバイダ MBean) をすべて取得します。
RuntimeServiceMBean
または DomainRuntimeServiceMBean
を使用して、WebLogic Server MBean 階層内を
DomainMBean
、SecurityConfigurationMBean
、RealmMBean
の順に移動します。
「MBean 階層内の移動」を参照してください。
そのセキュリティ プロバイダ タイプのインスタンスを含む RealmMBean
属性の値を取得します。
たとえば、すべての認証プロバイダを取得するには、RealmMBean
AuthenticationProviders
属性の値を取得します。
RealmMBean
属性にある各セキュリティ プロバイダ MBean ごとに、MBean クラスの名前を取得します (コード リスト 6-1 を参照)。
プロバイダ MBean の javax.management.ModelMBeanInfo
オブジェクトを取得します。
MBeanServerConnection.getMBeanInfo(
Provider-MBean
)
を使用します。
Provider-MBean
は RealmMBean
から取得したプロバイダ MBean です。
MBean info の javax.management.Descriptor
オブジェクトを取得してから、Descriptor の interfaceClassName
フィールドの値を取得します。
WebLogic Server MBean タイプ サービスを使用して、特定の基本タイプまたは mix-in インタフェースを拡張するすべてのセキュリティ プロバイダ MBean クラスを検索します (コード リスト 6-1 を参照)。
基本タイプまたは mix-in インタフェースの完全修飾インタフェース名を調べます。
『WebLogic Server MBean リファレンス』の各項目では、WebLogic Server プロバイダ MBean の完全修飾インタフェース名が示されています。サードパーティのプロバイダを使用する場合は、サードパーティのドキュメントでこの情報を参照してください。
たとえば、UserEditorMBean
mix-in インタフェースの完全修飾インタフェース名は weblogic.management.security.authentication.UserEditorMBean
です (『WebLogic Server MBean リファレンス』の「UserEditorMBean
」を参照してください)。
MBeanTypeService
MBean のオブジェクト名を作成します。
MBeanTypeService
MBean は常に次の javax.management.ObjectName
で登録されます。
com.bea:Name=MBeanTypeService,Type=weblogic.management.mbeanservers.MBeanTypeService
MBeanTypeService
MBean の getSubtypes( java.lang.String
beanInterface
)
オペレーションを呼び出します。
beanInterface
は手順 a で調べた完全修飾インタフェース名です。
オペレーションは java.lang.String
オブジェクトの配列を返します。
MBean タイプ サービスの出力を、各プロバイダ MBean インスタンスのクラス名と比較します (コード リスト 6-1 を参照)。
プロバイダ MBean のクラスが手順 4a のインタフェースを実装または拡張している場合は、プロバイダ MBean のオペレーションを呼び出すか、属性の値を変更します。
コード リスト 6-1 例 : プロバイダ MBean インスタンスが UserEditorMBean mix-in インタフェースを拡張しているかどうかの判断
ObjectName MBTservice = new ObjectName(
"com.bea:Name=MBeanTypeService,Type=weblogic.management.mbeanservers.
MBeanTypeService");
for (int p = 0; atnProviders != null && p < atnProviders.length; p++) {
ModelMBeanInfo info = (ModelMBeanInfo)
mBeanServerConnection.getMBeanInfo(atnProviders[p]);
Descriptor desc = info.getMBeanDescriptor();
String className = (String)desc.getFieldValue("interfaceClassName");
String[] mba = (String[]) mBeanServerConnection.invoke( MBTservice,
"getSubtypes", new Object[] {
"weblogic.management.security.authentication.UserEditorMBean" },
new String[] { "java.lang.String" });
boolean isEditor = false;
for (int i = 0; i < mba.length; i++) {
if (mba[i].equals(className)){
userEditor = atnProviders[p];
isEditor = true;
break;
}
if (isEditor = true) break;
}
}
例 : レルムへのユーザの追加
コード リスト 6-2 のコード例では、レルム内のすべての認証プロバイダを検索し、UserEditorMBean
を拡張している最初の認証プロバイダを使用して、ユーザをセキュリティ レルムに追加し、そのユーザを Administrators
グループに追加しています。
コード例に関する以下の点に留意してください。
MedRec サンプル ドメインのコードと同様に、ユーザ名とパスワードは、Apache Struts アクションから作成された JavaBean から取得する。
MedRec のコードを参照するには、次の手順に従います。
WebLogic Server examplesServer を起動します。
examplesServer のホーム ページから、[Extending a Realm Using JMX] をクリックします。
セキュリティ レルムそのもののコンフィグレーションは変更しないので、このコードではドメインのコンフィグレーションをロックする必要はない。代わりに、LDAP サーバにセキュリティ データを保存する、デフォルト認可プロバイダのオペレーションを呼び出します。
コード リスト 6-2 例 : レルムへのユーザの追加
public ActionForward createNewAdmin(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ClientException, Exception {
logger.info("Create New Admin");
CreateAdminBean user = (CreateAdminBean) form;
logger.debug(user.toString());
MBeanServerConnection mBeanServerConnection =
this.getDomainMBeanServerConnection(request);
ObjectName service = new
ObjectName("com.bea:Name=DomainRuntimeService,"+
"Type=weblogic.management.mbeanservers.domainruntime.
DomainRuntimeServiceMBean");
ObjectName domainMBean =
(ObjectName) mBeanServerConnection.getAttribute(service,
"DomainConfiguration");
ObjectName securityConfiguration =
(ObjectName) mBeanServerConnection.getAttribute(domainMBean,
"SecurityConfiguration");
ObjectName defaultRealm =
(ObjectName) mBeanServerConnection.
getAttribute(securityConfiguration, "DefaultRealm");
ObjectName[] atnProviders =
(ObjectName[]) mBeanServerConnection.getAttribute(defaultRealm,
"AuthenticationProviders");
ObjectName userEditor = null;
ObjectName MBTservice = new ObjectName(
"com.bea:Name=MBeanTypeService,Type=weblogic.management.mbeanservers.
MBeanTypeService");
for (int p = 0; atnProviders != null && p < atnProviders.length; p++) {
ModelMBeanInfo info = (ModelMBeanInfo)
mBeanServerConnection.getMBeanInfo(atnProviders[p]);
Descriptor desc = info.getMBeanDescriptor();
String className = (String)desc.getFieldValue("interfaceClassName");
String[] mba = (String[]) mBeanServerConnection.invoke( MBTservice,
"getSubtypes", new Object[] {
"weblogic.management.security.authentication.UserEditorMBean" },
new String[] { "java.lang.String" });
boolean isEditor = false;
for (int i = 0; i < mba.length; i++) {
if (mba[i].equals(className)){
userEditor = atnProviders[p];
isEditor = true;
break;
}
if (isEditor = true) break;
}
}
try {
mBeanServerConnection.invoke(
userEditor, "createUser",
new Object[] {user.getUsername(), user.getPassword(),
"MedRec Admininistator"},
new String[] {"java.lang.String", "java.lang.String",
"java.lang.String"}
);
} catch (MBeanException ex) {
Exception e = ex.getTargetException();
if (e instanceof AlreadyExistsException) {
logger.info("User, " + user.getUsername() + ", already exists.");
ActionErrors errors = new ActionErrors();
errors.add("invalidUserName",
new ActionError("invalid.username.already.exists"));
saveErrors(request, errors);
return mapping.findForward("create.new.admin");
} else {
logger.debug(e);
return mapping.findForward("create.new.admin");
}
}
try {
mBeanServerConnection.invoke(
userEditor, "addMemberToGroup",
new Object[] {"Administrators", user.getUsername()},
new String [] {"java.lang.String", "java.lang.String"}
);
mBeanServerConnection.invoke(
userEditor, "addMemberToGroup",
new Object[] {"MedRecAdmins", user.getUsername()},
new String [] {"java.lang.String", "java.lang.String"}
);
} catch (MBeanException ex) {
Exception e = ex.getTargetException();
if (e instanceof NameNotFoundException) {
logger.info("Invalid Group Name.");
ex.printStackTrace();
return mapping.findForward("create.new.admin");
} else {
logger.debug(e);
return mapping.findForward("create.new.admin");
}
}
logger.info("MedRec Administrator successfully created.");
return mapping.findForward("create.new.admin.successful");
}
レルム コンフィグレーションの変更
セキュリティ プロバイダ MBean は認証や認可などのセキュリティの特定の側面を扱いますが、他の 2 つの MBean では、セキュリティに関する一般的な、レルム全体およびドメイン全体の側面を扱います。
RealmMBean
- セキュリティ レルムを表します。JMX クライアントはこの MBean を使用して、セキュリティ プロバイダを追加または削除します。また、Web コンテナや EJB コンテナはすべてのアクセスでセキュリティ フレームワークを呼び出すか、またはデプロイメント記述子にセキュリティが設定されるときにのみ呼び出すかなどの動作を指定します。
SecurityConfigurationMBean
- 接続フィルタや、Web アプリケーション コンテナ内のセキュリティ制約、サーブレット、フィルタ、仮想ホストおよび外部セキュリティ ポリシーに対する URL パターン マッチングの動作などの、ドメイン全体のセキュリティ設定を指定します。
これらの 2 つの MBean では WebLogic Server コンフィグレーション ファイルにデータを永続化します。そのため、RealmMBean
または SecurityConfigurationMBean
の属性値を変更するには、「JMX を使用したドメインのコンフィグレーションの管理」で説明されているように、編集 MBean サーバと ConfigurationManagerMBean
を使用する必要があります。