ヘッダーをスキップ
Oracle® Fusion Middleware Oracle WebLogic Server JMX によるカスタム管理ユーティリティの開発
11g リリース 1 (10.3.1)
B55537-01
 

目次
目次

戻る
戻る
 
次へ
次へ
 

6 JMX を使用したセキュリティ レルムの管理

セキュリティ レルムは、WebLogic リソースを保護する複数のメカニズムで構成されています。各セキュリティ レルムは、コンフィグレーションされた一連のセキュリティ プロバイダから成ります。セキュリティ プロバイダは、セキュリティの特定の側面を扱うモジュール形式のコンポーネントです。レルム内のプロバイダを使用する JMX クライアントを作成して、ユーザやグループなどのセキュリティ データを追加または削除できます。プロバイダを追加または削除したり、レルム コンフィグレーションにその他の変更を加えたりするクライアントを作成することもできます。

以下の節では、JMX を使用したセキュリティ レルムの管理について説明します。

WebLogic セキュリティの詳細については、『Oracle Fusion Middleware Oracle WebLogic Server Security について』を参照してください。

セキュリティ MBean の階層について

他のサブシステムと同様に、WebLogic Server セキュリティ フレームワークでは MBean を 1 つの階層にまとめます。JMX クライアントは JMX オブジェクト名を作成せずに、その階層内を移動できます。ただし、セキュリティ レルムで使用できる MBean タイプは、レルムにインストールされたセキュリティ プロバイダによって異なり、各セキュリティ プロバイダで利用できるサービスは、プロバイダの作成方法によって異なります。

セキュリティ レルム階層のルートは RealmMBean です。ルートには、そのレルムでコンフィグレーションされたすべてのプロバイダが含まれています。たとえば、Authorizers 属性には、レルムでコンフィグレーションされているすべての認可プロバイダが含まれています。WebLogic Server にはデフォルトのセキュリティ プロバイダが用意されているので、RealmMBean Authorizers 属性にはデフォルトで DefaultAuthorizerMBean が含まれています。ただし、これらのデフォルト プロバイダをアンインストールし、任意の数の独自のプロバイダまたはサード パーティのプロバイダで置き換えることができます。デフォルト セキュリティ プロバイダの詳細については、『Oracle Fusion Middleware Oracle WebLogic Server のセキュリティ』の「WebLogic セキュリティ プロバイダのコンフィグレーション」と「認証プロバイダのコンフィグレーション」を参照してください。

基本プロバイダ タイプと mix-in インタフェース

各セキュリティ プロバイダでは基本プロバイダ タイプを拡張する必要があります。たとえば、DefaultAuthorizerMBeanAuthorizerMBean を拡張しており、カスタムまたはサード パーティの認可プロバイダも 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 セキュリティ プロバイダのコンフィグレーションの詳細については、『Oracle Fusion Middleware Oracle 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 を拡張する必要がある。

『Oracle Fusion Middleware Oracle WebLogic Server MBean リファレンス WebLogic Server MBean リファレンス』の「AuthenticationProviderMBean」を参照。

AuthenticatorMBean

ログイン サービスを備えたすべての認証プロバイダが拡張する必要のある SSPI MBean。この MBean には、ログイン シーケンスにおける認証プロバイダの位置付け (REQUIRED、REQUISITE、SUFFICENT、または OPTIONAL) を決定する ControlFlag がある。

『Oracle Fusion Middleware Oracle WebLogic Server MBean リファレンス』の「AuthenticatorMBean」を参照。

IdentityAsserterMBean

すべての ID アサーション プロバイダが拡張する必要のある SSPI MBean。この MBean を利用すると、ID アサーション プロバイダは、ID アサーションが可能なトークン タイプを指定できるようになる。

『Oracle Fusion Middleware Oracle WebLogic Server MBean リファレンス』の「IdentityAsserterMBean」を参照。

ServletAuthenticationFilterMBean

すべてのサーブレット認証フィルタが拡張する必要のある SSPI MBean。この MBean は単なるマーカ インタフェース。メソッドは持たない。

『Oracle Fusion Middleware Oracle WebLogic Server MBean リファレンス』の「ServletAuthenticationFilterMBean」を参照。


表 6-2 他のセキュリティ プロバイダの MBean

MBean コンフィグレーションする対象
AdjudicatorMBean

すべての裁決プロバイダが拡張する必要のある SSPI MBean。

『Oracle Fusion Middleware Oracle WebLogic Server MBean リファレンス』の「AdjudicatorMBean」を参照。

DefaultAdjudicatorMBean

WebLogic 裁決プロバイダのコンフィグレーション属性。

『Oracle Fusion Middleware Oracle WebLogic Server MBean リファレンス』の「DefaultAdjudicatorMBean」を参照。

AuditorMBean

すべての監査プロバイダが拡張する必要のある SSPI MBean。

『Oracle Fusion Middleware Oracle WebLogic Server MBean リファレンス』の「AuditorMBean」を参照。

DefaultAuditorMBean

WebLogic 監査プロバイダのコンフィグレーション属性。

『Oracle Fusion Middleware Oracle WebLogic Server MBean リファレンス』の「DefaultAuditorMBean」を参照。

AuthorizerMBean

すべての認可プロバイダが拡張する必要のある SSPI MBean。

『Oracle Fusion Middleware Oracle WebLogic Server MBean リファレンス』の「AuthorizerMBean」を参照。

DeployableAuthorizerMBean

Web アプリケーションまたは EJB のデプロイ時に作成されたポリシーを格納できる、すべての認可プロバイダが拡張する必要のある SSPI MBean。

『Oracle Fusion Middleware Oracle WebLogic Server MBean リファレンス』の「DeployableAuthorizerMBean」を参照。

DefaultAuthorizerMBean

WebLogic 認可プロバイダのコンフィグレーション属性。

『Oracle Fusion Middleware Oracle WebLogic Server MBean リファレンス』の「DefaultAuthorizerMBean」を参照。

CredentialMapperMBean

すべての資格マッピング プロバイダが拡張する必要のある SSPI MBean。

『Oracle Fusion Middleware Oracle WebLogic Server MBean リファレンス』の「CredentialMapperMBean」を参照。

DeployableCredentialMapperMBean

コンポーネントのデプロイ時に作成された資格マップを格納できる、すべての資格マッピング プロバイダが拡張する必要のある SSPI MBean。

『Oracle Fusion Middleware Oracle WebLogic Server MBean リファレンス』の「DeployableCredentialMapperMBean」を参照。

DefaultCredentialMapperMBean

WebLogic 資格マッピング プロバイダ (ユーザ名/パスワード資格マッピング プロバイダ) のコンフィグレーション属性。

『Oracle Fusion Middleware Oracle WebLogic Server MBean リファレンス』の「DefaultCredentialMapperMBean」を参照。

PKICredentialMapperMBean

PKI 資格マッピング プロバイダ (キー ペア資格マッピング プロバイダ) のコンフィグレーション属性。

『Oracle Fusion Middleware Oracle WebLogic Server MBean リファレンス』の「PKICredentialMapperMBean」を参照。

SAMLCredentialMapperMBean

SAML 資格マッピング プロバイダ (Security Assertion Markup Language 資格マッピング プロバイダ) のコンフィグレーション属性。

『Oracle Fusion Middleware Oracle WebLogic Server MBean リファレンス』の「SAMLCredentialMapperMBean」を参照。

CertPathProviderMBean

すべての証明書パス プロバイダの基本 MBean。

『Oracle Fusion Middleware Oracle WebLogic Server MBean リファレンス』の「CertPathProviderMBean」を参照。

CertPathBuilderMBean

CertPathBuilder を備えたすべての証明書パス プロバイダが拡張する必要のある SSPI MBean。

『Oracle Fusion Middleware Oracle WebLogic Server MBean リファレンス』の「CertPathBuilderMBean」を参照。

CertPathValidatorMBean

CertPathValidator サービスを備えたすべての証明書パス プロバイダが拡張する必要のある SSPI MBean。

『Oracle Fusion Middleware Oracle WebLogic Server MBean リファレンス』の「CertPathValidatorMBean」を参照。

CertificateRegistryMBean

証明書レジストリをコンフィグレーションおよび管理する。これはビルダであり、検証プロバイダでもある。目的の証明書、目的の証明書のサブジェクト DN、発行者 DN とシリアル番号、およびサブジェクト キー識別子に基づいたビルドをサポートする。

『Oracle Fusion Middleware Oracle WebLogic Server MBean リファレンス』の「CertificateRegistryMBean」を参照。

WebLogicCertPathProviderMBean

CertPathBuilder を備えたすべての証明書パス プロバイダが拡張する必要のある SSPI MBean。

『Oracle Fusion Middleware Oracle WebLogic Server MBean リファレンス』の「WebLogicCertPathProviderMBean」を参照。

RoleMapperMBean

ロール マッピング プロバイダの基本 MBean。デプロイできないモジュールのロール マッピング プロバイダは、この MBean を直接拡張する必要がある。デプロイできるモジュールのロール マッピング プロバイダは DeployableRoleMapperMBean を拡張する必要がある。

『Oracle Fusion Middleware Oracle WebLogic Server MBean リファレンス』の「RoleMapperMBean」を参照。

DeployableRoleMapperMBean

Web アプリケーションまたは EJB のデプロイ時に作成されたロールを格納できる、すべてのロール マッピング プロバイダが拡張する必要のある SSPI MBean。

『Oracle Fusion Middleware Oracle WebLogic Server MBean リファレンス』の「DeployableRoleMapperMBean」を参照。

DefaultRoleMapperMBean

WebLogic ロール マッピング プロバイダのコンフィグレーション属性。

『Oracle Fusion Middleware Oracle WebLogic Server MBean リファレンス』の「DefaultRoleMapperMBean」を参照。


表 6-3 セキュリティ プロバイダの MBean mix-in インタフェース

MBean コンフィグレーションする対象
ContextHandlerMBean

ContextHandler がサポートする一連の属性を提供する。監査プロバイダ MBean はこの MBean を必要に応じて実装できる。

『Oracle Fusion Middleware Oracle WebLogic Server MBean リファレンス』の「ContextHandlerMBean」を参照。

GroupEditorMBean

グループを作成、編集、および削除するための一連のメソッドを提供する。認証プロバイダ MBean はこの MBean を必要に応じて実装できる。

『Oracle Fusion Middleware Oracle WebLogic Server MBean リファレンス』の「GroupEditorMBean」を参照。

GroupMemberListerMBean

グループのメンバーをリストするためのメソッドを提供する。認証プロバイダ MBean はこの MBean を必要に応じて実装できる。

『Oracle Fusion Middleware Oracle WebLogic Server MBean リファレンス』の「GroupMemberListerMBean」を参照。

GroupMembershipHierarchyCacheMBean

グループ メンバシップ階層のキャッシュをサポートするのに必要なコンフィグレーション属性を提供する。認証プロバイダ MBean はこの MBean を必要に応じて実装できる。

『Oracle Fusion Middleware Oracle WebLogic Server MBean リファレンス』の「GroupMembershipHierarchyCacheMBean」を参照。

GroupReaderMBean

グループに関するデータを読み込むための一連のメソッドを提供する。認証プロバイダ MBean はこの MBean を必要に応じて実装できる。

『Oracle Fusion Middleware Oracle WebLogic Server MBean リファレンス』の「GroupReaderMBean」を参照。

MemberGroupListerMBean

メンバーを含むグループをリストするためのメソッドを提供する。認証プロバイダ MBean はこの MBean を必要に応じて実装できる。

『Oracle Fusion Middleware Oracle WebLogic Server MBean リファレンス』の「MemberGroupListerMBean」を参照。

UserEditorMBean

ユーザを作成、編集、および削除するための一連のメソッドを提供する。認証プロバイダ MBean はこの MBean を必要に応じて実装できる。

『Oracle Fusion Middleware Oracle WebLogic Server MBean リファレンス』の「UserEditorMBean」を参照。

UserLockoutManagerMBean

ユーザ アカウントに対するロックアウトをリストおよび管理する。認証プロバイダ MBean はこの MBean を必要に応じて実装できる。

『Oracle Fusion Middleware Oracle WebLogic Server MBean リファレンス』の「UserLockoutManagerMBean」を参照。

UserPasswordEditorMBean

ユーザのパスワードを変更するための 2 つのメソッドを提供する。認証プロバイダ MBean はこの MBean を必要に応じて実装できる。

『Oracle Fusion Middleware Oracle WebLogic Server MBean リファレンス』の「UserPasswordEditorMBean」を参照。

UserReaderMBean

ユーザに関するデータを読み込むための一連のメソッドを提供する。認証プロバイダ MBean はこの MBean を必要に応じて実装できる。

『Oracle Fusion Middleware Oracle WebLogic Server MBean リファレンス』の「UserReaderMBean」を参照。

UserRemoverMBean

ユーザを削除するためのメソッドを提供する。認証プロバイダ MBean はこの MBean を必要に応じて実装できる。

『Oracle Fusion Middleware Oracle WebLogic Server MBean リファレンス』の「UserRemoverMBean」を参照。

RoleEditorMBean

ロールを作成、編集、および削除するための一連のメソッドを提供する。ロール マッピング プロバイダ MBean はこの MBean を必要に応じて実装できる。

『Oracle Fusion Middleware Oracle WebLogic Server MBean リファレンス』の「RoleEditorMBean」を参照。

RoleListerMBean

ロールに関するデータをリストするための一連のメソッドを提供する。ロール マッピング プロバイダ MBean はこの MBean を必要に応じて実装できる。

『Oracle Fusion Middleware Oracle WebLogic Server MBean リファレンス』の「RoleListerMBean」を参照。

RoleReaderMBean

ロールを読み込むための一連のメソッドを提供する。ロール マッピング プロバイダ MBean はこの MBean を必要に応じて実装できる。

『Oracle Fusion Middleware Oracle WebLogic Server MBean リファレンス』の「RoleReaderMBean」を参照。

PolicyEditorMBean

ポリシーを作成、編集、および削除するための一連のメソッドを提供する。認可プロバイダ MBean はこの MBean を必要に応じて実装できる。

『Oracle Fusion Middleware Oracle WebLogic Server MBean リファレンス』の「PolicyEditorMBean」を参照。

PolicyListerMBean

ポリシーに関するデータをリストするための一連のメソッドを提供する。認可プロバイダ MBean はこの MBean を必要に応じて実装できる。

『Oracle Fusion Middleware Oracle WebLogic Server MBean リファレンス』の「PolicyListerMBean」を参照。

PolicyReaderMBean

ポリシーを読み込むための一連のメソッドを提供する。認可プロバイダ MBean はこの MBean を必要に応じて実装できる。

『Oracle Fusion Middleware Oracle WebLogic Server MBean リファレンス』の「PolicyReaderMBean」を参照。

PKICredentialMapEditorMBean

ユーザ、リソース、および資格アクションを、キーストア エリアスおよび対応するパスワードに一致させる資格マップを作成、編集、削除するための一連のメソッドを提供する。PKICredentialMapping プロバイダ MBean はこの MBean を必要に応じて実装できる。

『Oracle Fusion Middleware Oracle WebLogic Server MBean リファレンス』の「PKICredentialMapEditorMBean」を参照。

PKICredentialMapReaderMBean

ユーザおよびリソースを、キーストア エリアスおよび対応するパスワードに一致させる資格マップを読み込むための、一連のメソッドを提供する。その資格マップを使用して、コンフィグレーション済みのキーストアからキー情報やパブリック証明書情報を取得できる。PKICredentialMapping プロバイダ MBean はこの MBean を必要に応じて実装できる。

『Oracle Fusion Middleware Oracle WebLogic Server MBean リファレンス』の「PKICredentialMapReaderMBean」を参照。

UserPasswordCredentialMapEditorMBean

WebLogic ユーザをリモート ユーザ名とその対応するパスワードに一致させる資格マップを作成、編集、削除するための一連のメソッドを提供する。資格マッピング プロバイダ MBean はこの MBean を必要に応じて拡張できる。

『Oracle Fusion Middleware Oracle WebLogic Server MBean リファレンス』の「UserPasswordCredentialMapEditorMBean」を参照。

UserPasswordCredentialMapExtendedReaderMBean

資格と資格マッピングを読み込むための一連のメソッドを提供する。資格マッピングは WebLogic ユーザをリモート ユーザ名とパスワードに一致させる。資格マッピング プロバイダ MBean はこの MBean を必要に応じて拡張できる。

『Oracle Fusion Middleware Oracle WebLogic Server MBean リファレンス』の「UserPasswordCredentialMapExtendedReaderMBean」を参照。

UserPasswordCredentialMapReaderMBean

資格と資格マッピングを読み込むための一連のメソッドを提供する。資格マッピングは WebLogic ユーザをリモート ユーザ名とパスワードに一致させる。資格マッピング プロバイダ MBean はこの MBean を必要に応じて拡張できる。

『Oracle Fusion Middleware Oracle WebLogic Server MBean リファレンス』の「UserPasswordCredentialMapReaderMBean」を参照。

ImportMBean

プロバイダ固有のデータをインポートするための一連のメソッドを提供する。セキュリティ プロバイダが拡張できる省略可能な mix-in インタフェース。

『Oracle Fusion Middleware Oracle WebLogic Server MBean リファレンス』の「ImportMBean」を参照。

ExportMBean

プロバイダ固有のデータをエクスポートするための一連のメソッドを提供する。セキュリティ プロバイダが拡張できる省略可能な mix-in インタフェース。

『Oracle Fusion Middleware Oracle WebLogic Server MBean リファレンス』の「ExportMBean」を参照。

ListerMBean

リストを返すための一般的なメカニズムを提供する。派生する MBean はこのインタフェースを拡張して、リスト内の現在のオブジェクトのデータにアクセスするメソッドを追加する。セキュリティ プロバイダが拡張できる省略可能な mix-in インタフェース。

『Oracle Fusion Middleware Oracle WebLogic Server MBean リファレンス』の「ListerMBean」を参照。

NameListerMBean

名前のリストを返すために使用するメソッドを定義している。セキュリティ プロバイダが拡張できる省略可能な mix-in インタフェース。

『Oracle Fusion Middleware Oracle WebLogic Server MBean リファレンス』の「NameListerMBean」を参照。

LDAPServerMBean

外部 LDAP サーバへの接続に必要なコンフィグレーション パラメータを取得するメソッドを提供する。セキュリティ プロバイダが拡張できる省略可能な mix-in インタフェース。

『Oracle Fusion Middleware Oracle WebLogic Server MBean リファレンス』の「LDAPServerMBean」を参照。

ApplicationVersionerMBean

バージョン管理可能なアプリケーションをサポートすることを示すために、セキュリティ プロバイダが拡張する SSPI MBean。RoleMapper、Authorizer、または CredentialMapper プロバイダ MBean が拡張できる省略可能な mix-in インタフェース。

『Oracle Fusion Middleware Oracle WebLogic Server MBean リファレンス』の「ApplicationerVersionMBean」を参照。


図 6-1 セキュリティ MBean

図 6-1 の後には説明を記載します。
「図 6-1 セキュリティ MBean」の説明

セキュリティ レルムを管理する MBean サーバの選択

JMX を使用してセキュリティ レルムを管理する場合は、タスクに応じて 2 つの異なる MBean サーバを使用する必要があります。

たとえば、DefaultAuthenticatorMBeanMinimumPasswordLength 属性の値は、ドメインのコンフィグレーション ドキュメントに格納されています。このドキュメントに対するすべての変更は WebLogic Server によって制御されているため、この属性の値を変更するには、編集 MBean サーバを使用してドメインのコンフィグレーションに対してロックを取得する必要があります。DefaultAuthenticatorMBeancreateUser オペレーションは、LDAP サーバにデータを追加します。このオペレーションは WebLogic Server によって制御されていません。DefaultAuthenticatorMBean のコンフィグレーションとそれが LDAP サーバで使用するデータの間で両立不能な変更が発生しないように、自身や別のユーザが MinimumPasswordLength 属性の変更を行っている場合には createUser オペレーションを呼び出すことはできません。さらに、この属性の変更には WebLogic Server の再起動が必要になるため、サーバが再起動するまで createUser オペレーションを呼び出すことができません。

既存のセキュリティ プロバイダの操作

セキュリティ プロバイダでは mix-in インタフェースを任意で拡張することができます。したがって、すべてのセキュリティ プロバイダがすべてのタスクを行えるわけではありません。このように柔軟性があるので、組織のセキュリティ設計者はセキュリティの要件に応じてレルムを設計できます。また、JMX クライアントの設計も、各レルムの設計やコンフィグレーションによって異なったものになります。

たとえば、次の 3 種類の認証プロバイダを含むレルムがあるとします。

このレルムの認証プロバイダを扱うには、JMX クライアントでは、適切なリポジトリにユーザを追加できるのはどの認証プロバイダかを判断できる必要があります。

表 6-4 では、タスクに適したセキュリティ プロバイダを検索する方法について説明します。

表 6-4 レルム内のプロバイダの検索

技術 説明

名前で検索する

管理者がレルムでコンフィグレーションするときに、各セキュリティ プロバイダ インスタンスには短い名前が割り当てられている。JMX クライアントは特定の種類 (認証プロバイダなど) のすべてのプロバイダをルックアップして、名前に一致するプロバイダを選択できる。

そのような JMX クライアントの例については、WebLogic Server の Examples Server を起動する。Examples Server のホーム ページから、「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 のインスタンスを検索することができる。

この方法ではユーザ入力は必要ないが、次のことが前提となる。

  • レルム内には常に SQLAuthenticatorMBean のインスタンスがあり、このインスタンスは UserEditorMBean を拡張していること。

  • SQLAuthenticatorMBean の複数のインスタンスがある場合は、そのすべてが UserEditorMBean を拡張しており、どのインスタンスを使用してもかまわないこと。

使用可能なサービスの検索」を参照。

必要な mix-in インタフェースを拡張したプロバイダを使用する

各プロバイダ MBean インスタンスのクラス階層を認識し、タスクに必要な mix-in インタフェースを拡張しているインスタンスを選択する JMX クライアントを作成できる。たとえば、クライアントでは UserEditorMBean を拡張した認証プロバイダを検索できる。「使用可能なサービスの検索」を参照。

必要な mix-in インタフェースを拡張した MBean がセキュリティ レルム内に 1 つしかないことが分かっている場合、またはどの方法を使用してもかまわない場合に、この方法を使用する。


使用可能なサービスの検索

タイプまたは mix-in インタフェースで MBean を検索する JMX クライアントを作成するには、次の手順に従います。

  1. WebLogic Server 実行時 MBean サーバに接続します。「MBean サーバへのリモート接続の作成」を参照してください。

    すべての WebLogic Server インスタンスは独自の実行時 MBean サーバを保持しており、どのサーバの実行時 MBean サーバにも接続できます。

  2. レルム内の特定のタイプのセキュリティ プロバイダ MBean (たとえば、認証プロバイダ MBean) をすべて取得します。

    1. RuntimeServiceMBean または DomainRuntimeServiceMBean を使用し、WebLogic Server MBean 階層を介して、次のパス順に移動します。

    2. DomainMBeanSecurityConfigurationMBeanRealmMBean

      MBean サーバへのリモート接続の作成」を参照してください。

    3. そのセキュリティ プロバイダ タイプのインスタンスを含む RealmMBean 属性の値を取得します。

      たとえば、すべての認証プロバイダを取得するには、RealmMBean AuthenticationProviders 属性の値を取得します。

  3. RealmMBean 属性にあるセキュリティ プロバイダ MBean ごとに、MBean クラスの名前を取得します (コード リスト 6-1 を参照してください) 。

    1. プロバイダ MBean の javax.management.ModelMBeanInfo オブジェクトを取得します。

      MBeanServerConnection.getMBeanInfo(Provider-MBean) を使用します。

      Provider-MBeanRealmMBean から取得したプロバイダ MBean です。

    2. MBean info の javax.management.Descriptor オブジェクトを取得してから、Descriptor の interfaceClassName フィールドの値を取得します。

  4. WebLogic Server MBean タイプ サービスを使用して、特定の基本タイプまたは mix-in インタフェースを拡張するすべてのセキュリティ プロバイダ MBean クラスを検索します (コード リスト 6-1 を参照してください) 。

    1. 基本タイプまたは mix-in インタフェースの完全修飾インタフェース名を調べます。

      『WebLogic Server MBean リファレンス』の各項目では、WebLogic Server プロバイダ MBean の完全修飾インタフェース名が示されています。サード パーティのプロバイダを使用する場合は、サード パーティのドキュメントでこの情報を参照してください。

      たとえば、UserEditorMBean mix-in インタフェースの完全修飾インタフェース名は weblogic.management.security.authentication.UserEditorMBean です (『Oracle Fusion Middleware Oracle WebLogic Server MBean リファレンス』の「UserEditorMBean」を参照してください。)

    2. MBeanTypeService MBean のオブジェクト名を作成します。

      MBeanTypeService MBean は常に次の javax.management.ObjectName で登録されます。

      com.bea:Name=MBeanTypeService,Type=weblogic.management.mbeanservers.MBeanTypeService 
      
    3. MBeanTypeService MBean の getSubtypes( java.lang.String beanInterface ) オペレーションを呼び出します。

      beanInterface は手順 1 で定義した完全修飾インタフェース名です。

      オペレーションは java.lang.String オブジェクトの配列を返します。

  5. MBean タイプ サービスの出力を、各プロバイダ MBean インスタンスのクラス名と比較します (コード リスト 6-1 を参照してください) 。

  6. プロバイダ 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 のコードを参照するには、次の手順に従います。

    1. WebLogic Server examplesServer を起動します。

    2. Examples Server のホーム ページから、[Using JMX to extend a security realm] をクリックする。

  • セキュリティ MBean そのもののコンフィグレーションは変更しないので、このコードではドメインのコンフィグレーションをロックする必要はない。代わりに、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 では、セキュリティに関する一般的な、レルム全体およびドメイン全体の側面を扱います。

これらの 2 つの MBean では WebLogic Server コンフィグレーション ファイルにデータを永続化します。そのため、RealmMBean または SecurityConfigurationMBean の属性値を変更するには、「JMX を使用したドメインのコンフィグレーションの管理」で説明されているように、編集 MBean サーバと ConfigurationManagerMBean を使用する必要があります。