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