Oracle® Fusion Middleware Oracle WebLogic Server JMXによるカスタム管理ユーティリティの開発 11g リリース1(10.3.5) B61630-03 |
|
前 |
次 |
セキュリティ・レルムは、WebLogicリソースを保護する複数のメカニズムで構成されています。各セキュリティ・レルムは、構成された一連のセキュリティ・プロバイダから成ります。セキュリティ・プロバイダは、セキュリティの特定の側面を扱うモジュール形式のコンポーネントです。レルム内のプロバイダを使用するJMXクライアントを作成して、ユーザーやグループなどのセキュリティ・データを追加または削除できます。プロバイダを追加または削除したり、レルム構成にその他の変更を加えたりするクライアントを作成することもできます。
以下の節では、JMXを使用したセキュリティ・レルムの管理について説明します。
WebLogicセキュリティの詳細は、『Oracle WebLogic Serverセキュリティの理解』を参照してください。
他のサブシステムと同様に、WebLogic Serverセキュリティ・フレームワークではMBeanを1つの階層にまとめます。JMXクライアントはJMXオブジェクト名を作成せずに、その階層内を移動できます。ただし、セキュリティ・レルムで使用できるMBeanタイプは、レルムにインストールされたセキュリティ・プロバイダによって異なり、各セキュリティ・プロバイダで利用できるサービスは、プロバイダの作成方法によって異なります。
セキュリティ・レルム階層のルートはRealmMBean
です。ルートには、そのレルムで構成されたすべてのプロバイダが含まれています。たとえば、Authorizers
属性には、レルムで構成されているすべての認可プロバイダが含まれています。WebLogic Serverにはデフォルトのセキュリティ・プロバイダが用意されているので、RealmMBean
のAuthorizers
属性にはデフォルトでDefaultAuthorizerMBean
が含まれています。ただし、これらのデフォルト・プロバイダをアンインストールし、任意の数の独自のプロバイダまたはサード・パーティのプロバイダで置き換えることができます。デフォルトのセキュリティ・プロバイダについては、『Oracle WebLogic Serverの保護』のWebLogicセキュリティ・プロバイダの構成に関する項および認可プロバイダの構成に関する項を参照してください。
各セキュリティ・プロバイダでは基本プロバイダ・タイプを拡張する必要があります。たとえば、DefaultAuthorizerMBean
はAuthorizerMBean
を拡張しており、カスタムまたはサード・パーティの認可プロバイダもAuthorizerMBean
を拡張します。JMXクライアントがRealmMBean
Authorizers
属性の値を取得する場合、MBeanサーバーはAuthorizerMBean
を拡張しているレルム内のすべてのMBeanを返します。JMXクライアントはプロバイダのリストを反復処理して、Name
属性の値や他の条件に基づいてプロバイダを選択できます。
オプショナル混合インタフェースを拡張して、基本プロバイダ・タイプの機能を強化することができます。たとえば、認証プロバイダでUserEditorMBean
を拡張すると、プロバイダはレルムにユーザーを追加できるようになります。
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は Oracle WebLogic Server MBeanリファレンスWebLogic Server MBeanリファレンスのAuthenticationProviderMBeanに関する項を参照してください。 |
AuthenticatorMBean |
ログイン・サービスを備えたすべての認証プロバイダが拡張する必要のあるSSPI MBean。このMBeanには、ログイン・シーケンスにおける認証プロバイダの位置付け(REQUIRED、REQUISITE、SUFFICENT、またはOPTIONAL)を決定する 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を直接拡張する必要があります。デプロイできるモジュールのロール・マッピング・プロバイダは 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に関する項を参照してください。 |
JMXを使用してセキュリティ・レルムを管理する場合は、タスクに応じて2つの異なるMBeanサーバーを使用する必要があります。
セキュリティMBean属性の値を設定する場合は、編集MBeanサーバーを使用します。
セキュリティ・プロバイダMBeanでユーザー、グループ、ロール、およびポリシーを追加したり、他の操作を呼び出したりする場合は、ランタイムMBeanサーバーまたはドメイン・ランタイムMBeanサーバーを使用します。
また、両立不能な変更が発生しないように、自身のクライアントや別のJMXクライアントに現在アクティブな編集セッションがある場合にはセキュリティ・プロバイダMBeanで操作を呼び出すことはできません。
たとえば、DefaultAuthenticatorMBean
のMinimumPasswordLength
属性の値は、ドメインの構成ドキュメントに格納されています。このドキュメントに対するすべての変更はWebLogic Serverによって制御されているため、この属性の値を変更するには、編集MBeanサーバーを使用してドメインの構成に対してロックを取得する必要があります。DefaultAuthenticatorMBean
のcreateUser
操作は、LDAPサーバーにデータを追加します。この操作はWebLogic Serverによって制御されていません。DefaultAuthenticatorMBean
の構成とそれがLDAPサーバーで使用するデータの間で両立不能な変更が発生しないように、自身や別のユーザーがMinimumPasswordLength
属性の変更を行っている場合にはcreateUser
操作を呼び出すことはできません。さらに、この属性の変更にはWebLogic Serverの再起動が必要になるため、サーバーが再起動するまでcreateUser
操作を呼び出すことができません。
セキュリティ・プロバイダでは混合インタフェースを必要に応じて拡張することができます。したがって、すべてのセキュリティ・プロバイダがすべてのタスクを行えるわけではありません。このように柔軟性があるので、組織のセキュリティ設計者はセキュリティの要件に応じてレルムを設計できます。また、JMXクライアントの設計も、各レルムの設計や構成によって異なったものになります。
たとえば、次の3種類の認証プロバイダを含むレルムがあるとします。
管理ユーザーをLDAPサーバーに保存するためにUserEditorMBean
を拡張した認証プロバイダ。
顧客をデータベース管理システムに保存するためにUserEditorMBean
を拡張した認証プロバイダ。
UserEditorMBean
を拡張せず、既存のユーザーを認証するためにのみ使用される認証プロバイダ。
このレルムの認証プロバイダを扱うには、JMXクライアントでは、適切なリポジトリにユーザーを追加できるのはどの認証プロバイダかを判断できる必要があります。
表6-4では、タスクに適したセキュリティ・プロバイダを検索する方法について説明します。
表6-4 レルム内のプロバイダの検索
技術 | 説明 |
---|---|
名前で検索する |
管理者がレルムで構成するときに、各セキュリティ・プロバイダ・インスタンスには短い名前が割り当てられています。JMXクライアントは特定の種類(認証プロバイダなど)のすべてのプロバイダをルックアップして、名前に一致するプロバイダを選択できます。 そのようなJMXクライアントの例については、WebLogic Serverのサンプル・サーバーを起動します。サンプル・サーバーのホーム・ページから、「Extending a Realm Using JMX」をクリックします。このJMXクライアントのソースは WL_HOME
この方法を使用する場合は、セキュリティ・プロバイダの名前を、JMXクライアントにハード・コード化するのではなく、構成ファイルに保存することを検討してください。構成ファイルを使用すると、システム管理者はレルム内のプロバイダを変更してプロパティ・ファイルを更新できるので、JMXクライアントを更新して再コンパイルする必要がありません。 |
MBeanタイプで検索する |
システム管理者が常に同じ種類のプロバイダをタスクに使用する場合、JMXクライアントはその特定の種類のプロバイダMBeanを検索できます。 たとえば、システム管理者が常に この方法ではユーザー入力は必要ありませんが、次のことが前提となります。
「使用可能なサービスの検索」を参照。 |
必要な混合インタフェースを拡張したプロバイダを使用する |
各プロバイダMBeanインスタンスのクラス階層を認識し、タスクに必要な混合インタフェースを拡張しているインスタンスを選択するJMXクライアントを作成できます。たとえば、クライアントでは 必要な混合インタフェースを拡張したMBeanがセキュリティ・レルム内に1つしかないことが分かっている場合、またはどの方法を使用してもかまわない場合に、この方法を使用します。 |
タイプまたは混合インタフェースでMBeanを検索するJMXクライアントを作成するには、次の手順に従います。
WebLogic ServerランタイムMBeanサーバーに接続します。「MBeanサーバーへのリモート接続の作成」を参照してください。
すべての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タイプ・サービスを使用して、特定の基本タイプまたは混合インタフェースを拡張するすべてのセキュリティ・プロバイダMBeanクラスを検索します(例6-1を参照してください) 。
基本タイプまたは混合インタフェースの完全修飾インタフェース名を調べます。
『WebLogic Server MBeanリファレンス』の各項目では、WebLogic ServerプロバイダMBeanの完全修飾インタフェース名が示されています。サード・パーティのプロバイダを使用する場合は、サード・パーティのドキュメントでこの情報を参照してください。
たとえば、UserEditorMBean
混合インタフェースの完全修飾インタフェース名はweblogic.management.security.authentication.UserEditorMBean
です。(Oracle 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
はステップ1で定義した完全修飾インタフェース名です。
操作はjava.lang.String
オブジェクトの配列を返します。
MBeanタイプ・サービスの出力を、各プロバイダMBeanインスタンスのクラス名と比較します(例6-1を参照してください) 。
プロバイダ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のコードを参照するには、次の手順に従います。
WebLogic Serverのサンプル・サーバーを起動します。
サンプル・サーバーのホーム・ページから、「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では、セキュリティに関する一般的な、レルム全体およびドメイン全体の側面を扱います。
RealmMBean
- セキュリティ・レルムを表します。JMXクライアントはそれを使用して、セキュリティ・プロバイダを追加または削除します。また、WebコンテナやEJBコンテナはすべてのアクセスでセキュリティ・フレームワークを呼び出すか、またはデプロイメント記述子にセキュリティが設定されるときにのみ呼び出すかなどの動作を指定します。
SecurityConfigurationMBean
- 接続フィルタや、Webアプリケーション・コンテナ内のセキュリティ制約、サーブレット、フィルタ、仮想ホストおよび外部セキュリティ・ポリシーに対するURLパターン・マッチングの動作などの、ドメイン全体のセキュリティ設定を指定します。
これらの2つのMBeanではWebLogic Server構成ファイルにデータを永続化します。そのため、RealmMBean
またはSecurityConfigurationMBean
の属性値を変更するには、第5章「JMXを使用したドメインの構成の管理」で説明されているように、編集MBeanサーバーとConfigurationManagerMBean
を使用する必要があります。