プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle WebLogic Server JMXによるカスタム管理ユーティリティの開発
12c (12.2.1.1.0)
E79368-01
目次へ移動
目次

前
次

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

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

この章の内容は以下のとおりです。

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

6.1 セキュリティMBeanの階層の理解

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

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

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

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

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

6.1.2 セキュリティMBean

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

  • 表6-1では、認証セキュリティ・プロバイダを構成するMBeanと、認証プロバイダで拡張する必要のある抽象MBeanクラスについて説明します。この表のMBeanに加えて、WebLogic Serverには即時利用可能な認証プロバイダごとの構成MBeanが含まれています。

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

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

WebLogicセキュリティ・プロバイダの構成の詳細は、Oracle WebLogic Serverセキュリティの管理 12c (12.2.1)のWebLogicセキュリティ・プロバイダの構成および認可プロバイダの構成を参照してください。図6-1では、構成MBean階層内のMBeanの位置を示します。

表6-1 認証セキュリティ・プロバイダのMBean

MBean 構成する対象
AuthenticationProviderMBean

認証プロバイダを管理するすべてのMBean実装の基本MBean。認証プロバイダでWebLogicセキュリティSSPIを使用してログイン・サービスを提供する場合、そのMBeanはweblogic.management.security.authentication.Authenticatorを拡張する必要があります。認証プロバイダでWebLogicセキュリティSPIを使用してIDアサーション・サービスを提供する場合、そのMBeanはweblogic.management.security.authentication.IdentityAsserterを拡張する必要があります。

Oracle 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」の説明

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

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

  • セキュリティMBean属性の値を設定する場合は、編集MBeanサーバーを使用します。

  • セキュリティ・プロバイダMBeanでユーザー、グループ、ロール、およびポリシーを追加したり、他の操作を呼び出したりする場合は、ランタイムMBeanサーバーまたはドメイン・ランタイムMBeanサーバーを使用します。

    また、両立不能な変更が発生しないように、自身のクライアントや別のJMXクライアントに現在アクティブな編集セッションがある場合にはセキュリティ・プロバイダMBeanで操作を呼び出すことはできません。

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

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

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

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

  • 管理ユーザーをLDAPサーバーに保存するためにUserEditorMBeanを拡張した認証プロバイダ。

  • 顧客をデータベース管理システムに保存するためにUserEditorMBeanを拡張した認証プロバイダ。

  • UserEditorMBeanを拡張せず、既存のユーザーを認証するためにのみ使用される認証プロバイダ。

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

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

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

技術 説明

名前で検索する

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

この方法を使用する場合は、セキュリティ・プロバイダの名前を、JMXクライアントにハード・コード化するのではなく、構成ファイルに保存することを検討してください。構成ファイルを使用すると、システム管理者はレルム内のプロバイダを変更してプロパティ・ファイルを更新できるので、JMXクライアントを更新して再コンパイルする必要がありません。

MBeanタイプで検索する

システム管理者が常に同じ種類のプロバイダをタスクに使用する場合、JMXクライアントはその特定の種類のプロバイダMBeanを検索できます。

たとえば、システム管理者が常にSQLAuthenticatorMBeanを使用して顧客をレルムに追加する場合、JMXクライアントはSQLAuthenticatorMBeanのインスタンスを検索することができます。

この方法ではユーザー入力は必要ありませんが、次のことが前提となります。

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

  • SQLAuthenticatorMBeanの複数のインスタンスがある場合は、そのすべてがUserEditorMBeanを拡張しており、どのインスタンスを使用しても問題ありません。

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

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

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

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

6.3.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. 基本タイプまたは混合インタフェースの完全修飾インタフェース名を調べます。

      Oracle 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.3.1.1 例:レルムへのユーザーの追加

例6-2のサンプル・コードでは、レルム内のすべての認証プロバイダを検索し、UserEditorMBeanを拡張している最初の認証プロバイダを使用して、ユーザーをセキュリティ・レルムに追加し、そのユーザーをAdministratorsグループに追加しています。

サンプル・コードに関する以下の点に留意してください。

  • ユーザー名とパスワードは、Apache Strutsのアクションで作成されたJavaBeanから取得されます。

  • セキュリティ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");
}

6.4 レルム構成の変更

セキュリティ・プロバイダMBeanは認証や認可などのセキュリティの特定の側面を扱いますが、他の2つのMBeanでは、セキュリティに関する一般的な、レルム全体およびドメイン全体の側面を扱います。

  • RealmMBean - セキュリティ・レルムを表します。JMXクライアントはそれを使用して、セキュリティ・プロバイダを追加または削除します。また、WebコンテナやEJBコンテナはすべてのアクセスでセキュリティ・フレームワークを呼び出すか、またはデプロイメント記述子にセキュリティが設定されるときにのみ呼び出すかなどの動作を指定します。

  • SecurityConfigurationMBean - 接続フィルタや、Webアプリケーション・コンテナ内のセキュリティ制約、サーブレット、フィルタ、仮想ホストおよび外部セキュリティ・ポリシーに対するURLパターン・マッチングの動作などの、ドメイン全体のセキュリティ設定を指定します。

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