ヘッダーをスキップ
Oracle® Fusion Middleware Oracle WebLogic Server JMXによるカスタム管理ユーティリティの開発
11g リリース1(10.3.6)
B61630-04
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

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

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

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

WebLogicセキュリティの詳細は、『Oracle WebLogic Serverセキュリティの理解』を参照してください。

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

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

セキュリティ・レルム階層のルートはRealmMBeanです。ルートには、そのレルムで構成されたすべてのプロバイダが含まれています。たとえば、Authorizers属性には、レルムで構成されているすべての認可プロバイダが含まれています。WebLogic Serverにはデフォルトのセキュリティ・プロバイダが用意されているので、RealmMBeanAuthorizers属性にはデフォルトでDefaultAuthorizerMBeanが含まれています。ただし、これらのデフォルト・プロバイダをアンインストールし、任意の数の独自のプロバイダまたはサード・パーティのプロバイダで置き換えることができます。デフォルトのセキュリティ・プロバイダについては、『Oracle WebLogic Serverの保護』のWebLogicセキュリティ・プロバイダの構成に関する項および認可プロバイダの構成に関する項を参照してください。

基本プロバイダ・タイプと混合インタフェース

各セキュリティ・プロバイダでは基本プロバイダ・タイプを拡張する必要があります。たとえば、DefaultAuthorizerMBeanAuthorizerMBeanを拡張しており、カスタムまたはサード・パーティの認可プロバイダもAuthorizerMBeanを拡張します。JMXクライアントがRealmMBean Authorizers属性の値を取得する場合、MBeanサーバーはAuthorizerMBeanを拡張しているレルム内のすべてのMBeanを返します。JMXクライアントはプロバイダのリストを反復処理して、Name属性の値や他の条件に基づいてプロバイダを選択できます。

オプショナル混合インタフェースを拡張して、基本プロバイダ・タイプの機能を強化することができます。たとえば、認証プロバイダでUserEditorMBeanを拡張すると、プロバイダはレルムにユーザーを追加できるようになります。

セキュリティMBean

WebLogic ServerのセキュリティMBeanはセキュリティ・レルム内のセキュリティ・プロバイダを構成します。以下の表では、様々なセキュリティ・プロバイダを構成するMBeanについて説明します。

  • 表6-1では、認証セキュリティ・プロバイダを構成するMBeanと、認証プロバイダで拡張する必要のある抽象MBeanクラスについて説明します。この表のMBeanの他に、WebLogic Serverにはデフォルトの各認証プロバイダ用の構成MBeanがあります。

  • 表6-2では、認証セキュリティ・プロバイダ以外のセキュリティ・プロバイダを構成するMBeanについて説明します。

  • 表6-3では、セキュリティ・プロバイダが管理用にユーティリティとしてサポートできる、オプショナルMBean混合インタフェースについて説明します。

WebLogicセキュリティ・プロバイダの構成の詳細は、『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 WebLogic Server MBeanリファレンスWebLogic Server MBeanリファレンスAuthenticationProviderMBeanに関する項を参照してください。

AuthenticatorMBean

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

Oracle WebLogic Server MBeanリファレンスAuthenticatorMBeanに関する項を参照してください。

IdentityAsserterMBean

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

Oracle WebLogic Server MBeanリファレンスIdentityAsserterMBeanに関する項を参照してください。

ServletAuthenticationFilterMBean

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

Oracle WebLogic Server MBeanリファレンスServletAuthenticationFilterMBeanに関する項を参照してください。


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

MBean 構成する対象
AdjudicatorMBean

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

Oracle WebLogic Server MBeanリファレンスAdjudicatorMBeanに関する項を参照してください。

DefaultAdjudicatorMBean

WebLogic裁決プロバイダの構成属性。

Oracle WebLogic Server MBeanリファレンスDefaultAdjudicatorMBeanに関する項を参照してください。

AuditorMBean

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

Oracle WebLogic Server MBeanリファレンスAuditorMBeanに関する項を参照してください。

DefaultAuditorMBean

WebLogic監査プロバイダの構成属性。

Oracle WebLogic Server MBeanリファレンスDefaultAuditorMBeanに関する項を参照してください。

AuthorizerMBean

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

Oracle WebLogic Server MBeanリファレンスAuthorizerMBeanに関する項を参照してください。

DeployableAuthorizerMBean

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

Oracle WebLogic Server MBeanリファレンスDeployableAuthorizerMBeanに関する項を参照してください。

DefaultAuthorizerMBean

WebLogic認可プロバイダの構成属性。

Oracle WebLogic Server MBeanリファレンスDefaultAuthorizerMBeanに関する項を参照してください。

CredentialMapperMBean

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

Oracle WebLogic Server MBeanリファレンスCredentialMapperMBeanに関する項を参照してください。

DeployableCredentialMapperMBean

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

Oracle WebLogic Server MBeanリファレンスDeployableCredentialMapperMBeanに関する項を参照してください。

DefaultCredentialMapperMBean

WebLogic資格証明マッピング・プロバイダ(ユーザー名/パスワード資格証明マッピング・プロバイダ)の構成属性。

Oracle WebLogic Server MBeanリファレンスDefaultCredentialMapperMBeanに関する項を参照してください。

PKICredentialMapperMBean

PKI資格証明マッピング・プロバイダ(キー・ペア資格証明マッピング・プロバイダ)の構成属性。

Oracle WebLogic Server MBeanリファレンスPKICredentialMapperMBeanに関する項を参照してください。

SAMLCredentialMapperMBean

SAML資格証明マッピング・プロバイダ(Security Assertion Markup Language資格証明マッピング・プロバイダ)の構成属性。

Oracle WebLogic Server MBeanリファレンスSAMLCredentialMapperMBeanに関する項を参照してください。

CertPathProviderMBean

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

Oracle WebLogic Server MBeanリファレンスCertPathProviderMBeanに関する項を参照してください。

CertPathBuilderMBean

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

Oracle WebLogic Server MBeanリファレンスCertPathBuilderMBeanに関する項を参照してください。

CertPathValidatorMBean

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

Oracle WebLogic Server MBeanリファレンスCertPathValidatorMBeanに関する項を参照してください。

CertificateRegistryMBean

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

Oracle WebLogic Server MBeanリファレンスCertificateRegistryMBeanに関する項を参照してください。

WebLogicCertPathProviderMBean

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

Oracle WebLogic Server MBeanリファレンスWebLogicCertPathProviderMBeanに関する項を参照してください。

RoleMapperMBean

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

Oracle WebLogic Server MBeanリファレンスRoleMapperMBeanに関する項を参照してください。

DeployableRoleMapperMBean

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

Oracle WebLogic Server MBeanリファレンスDeployableRoleMapperMBeanに関する項を参照してください。

DefaultRoleMapperMBean

WebLogicロール・マッピング・プロバイダの構成属性。

Oracle WebLogic Server MBeanリファレンスDefaultRoleMapperMBeanに関する項を参照してください。


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

MBean 構成する対象
ContextHandlerMBean

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

Oracle WebLogic Server MBeanリファレンスContextHandlerMBeanに関する項を参照してください。

GroupEditorMBean

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

Oracle WebLogic Server MBeanリファレンスGroupEditorMBeanに関する項を参照してください。

GroupMemberListerMBean

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

Oracle WebLogic Server MBeanリファレンスGroupMemberListerMBeanに関する項を参照してください。

GroupMembershipHierarchyCacheMBean

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

Oracle WebLogic Server MBeanリファレンスGroupMembershipHierarchyCacheMBeanに関する項を参照してください。

GroupReaderMBean

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

Oracle WebLogic Server MBeanリファレンスGroupReaderMBeanに関する項を参照してください。

MemberGroupListerMBean

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

Oracle WebLogic Server MBeanリファレンスMemberGroupListerMBeanに関する項を参照してください。

UserEditorMBean

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

Oracle WebLogic Server MBeanリファレンスUserEditorMBeanに関する項を参照してください。

UserLockoutManagerMBean

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

Oracle WebLogic Server MBeanリファレンスUserLockoutManagerMBeanに関する項を参照してください。

UserPasswordEditorMBean

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

Oracle WebLogic Server MBeanリファレンスUserPasswordEditorMBeanに関する項を参照してください。

UserReaderMBean

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

Oracle WebLogic Server MBeanリファレンスUserReaderMBeanに関する項を参照してください。

UserRemoverMBean

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

Oracle WebLogic Server MBeanリファレンスUserRemoverMBeanに関する項を参照してください。

RoleEditorMBean

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

Oracle WebLogic Server MBeanリファレンスRoleEditorMBeanに関する項を参照してください。

RoleListerMBean

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

Oracle WebLogic Server MBeanリファレンスRoleListerMBeanに関する項を参照してください。

RoleReaderMBean

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

Oracle WebLogic Server MBeanリファレンスRoleReaderMBeanに関する項を参照してください。

PolicyEditorMBean

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

Oracle WebLogic Server MBeanリファレンスPolicyEditorMBeanに関する項を参照してください。

PolicyListerMBean

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

Oracle WebLogic Server MBeanリファレンスPolicyListerMBeanに関する項を参照してください。

PolicyReaderMBean

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

Oracle WebLogic Server MBeanリファレンスPolicyReaderMBeanに関する項を参照してください。

PKICredentialMapEditorMBean

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

Oracle WebLogic Server MBeanリファレンスPKICredentialMapEditorMBeanに関する項を参照してください。

PKICredentialMapReaderMBean

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

Oracle WebLogic Server MBeanリファレンスPKICredentialMapReaderMBeanに関する項を参照してください。

UserPasswordCredentialMapEditorMBean

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

Oracle WebLogic Server MBeanリファレンスUserPasswordCredentialMapEditorMBeanに関する項を参照してください。

UserPasswordCredentialMapExtendedReaderMBean

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

Oracle WebLogic Server MBeanリファレンスUserPasswordCredentialMapExtendedReaderMBeanに関する項を参照してください。

UserPasswordCredentialMapReaderMBean

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

Oracle WebLogic Server MBeanリファレンスUserPasswordCredentialMapReaderMBeanに関する項を参照してください。

ImportMBean

プロバイダ固有のデータをインポートするための一連のメソッドを提供します。セキュリティ・プロバイダが拡張できるオプショナル混合インタフェース。

Oracle WebLogic Server MBeanリファレンスImportMBeanに関する項を参照してください。

ExportMBean

プロバイダ固有のデータをエクスポートするための一連のメソッドを提供します。セキュリティ・プロバイダが拡張できるオプショナル混合インタフェース。

Oracle WebLogic Server MBeanリファレンスExportMBeanに関する項を参照してください。

ListerMBean

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

Oracle WebLogic Server MBeanリファレンスListerMBeanに関する項を参照してください。

NameListerMBean

名前のリストを返すために使用するメソッドを定義しています。セキュリティ・プロバイダが拡張できるオプショナル混合インタフェース。

Oracle WebLogic Server MBeanリファレンスNameListerMBeanに関する項を参照してください。

LDAPServerMBean

外部LDAPサーバーへの接続に必要な構成パラメータを取得するメソッドを提供します。セキュリティ・プロバイダが拡張できるオプショナル混合インタフェース。

Oracle WebLogic Server MBeanリファレンスLDAPServerMBeanに関する項を参照してください。

ApplicationVersionerMBean

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

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操作を呼び出すことができません。

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

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

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

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

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

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

技術 説明

名前で検索する

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

そのようなJMXクライアントの例については、WebLogic 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を拡張しており、どのインスタンスを使用しても問題ありません。

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

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

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

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


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

タイプまたは混合インタフェースで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タイプ・サービスを使用して、特定の基本タイプまたは混合インタフェースを拡張するすべてのセキュリティ・プロバイダMBeanクラスを検索します(例6-1を参照してください) 。

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

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

      たとえば、UserEditorMBean混合インタフェースの完全修飾インタフェース名はweblogic.management.security.authentication.UserEditorMBeanです。(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混合インタフェースを拡張しているかどうかの判断

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のサンプル・サーバーを起動します。

    2. サンプル・サーバーのホーム・ページから、「Extending a Realm Using JMX」をクリックします。

  • セキュリティ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の属性値を変更するには、第5章「JMXを使用したドメインの構成の管理」で説明されているように、編集MBeanサーバーとConfigurationManagerMBeanを使用する必要があります。