10 資格証明マッピング・プロバイダ
資格証明マッピングとは、ターゲット・リソースにアクセスするユーザーを認証するための適切な資格証明のセットを、レガシー・システムのデータベースを用いて取得するプロセスのことです。WebLogic Serverでは、資格証明マッピング・プロバイダを使用して資格証明マッピング・サービスを提供し、新しいタイプの資格証明をWebLogic Server環境に導入します。
この章の内容は次のとおりです。
資格証明マッピングの概念
サブジェクト、つまりWebLogicリソース・リクエストの発信元は、資格証明というセキュリティ関連の属性を持っています。資格証明には、新しいサービスにアクセスするサブジェクトを認証するための情報が含まれています。こうした資格証明には、ユーザー名/パスワードの組合せ、Kerberosチケット、および公開キー証明書などがあります。また、サブジェクトが特定のアクティビティを実行することを許可するデータも資格証明に含まれています。たとえば、暗号キーが表す資格証明を持っていれば、サブジェクトは署名したり、データを暗号化したりすることができます。
資格証明マップは、WebLogic Serverが使用する資格証明と、レガシー・システム(または任意のリモート・システム)で使用する資格証明とのマッピングです。これにより、WebLogic Serverは、そのシステム内の特定のリソースへの接続方法を知ります。つまり、資格証明マップを使用することで、WebLogic Serverは認証済みサブジェクトに代わってリモート・システムにログインできます。資格証明マッピング・プロバイダを開発すると、資格証明をこのようにマップできます。
資格証明マッピング・プロセス
資格証明マッピング・プロセスにおける資格証明マッピング・プロバイダとWebLogicセキュリティ・フレームワークとの対話を図10-1に示し、続いてそれについて説明します。
一般に、資格証明マッピングは以下のように実行されます。
-
JavaServer Page (JSP)、サーブレット、Enterprise JavaBeans (EJB)、リソース・アダプタなどのアプリケーション・コンポーネントは、適切なリソース・コンテナを通じてWebLogicセキュリティ・フレームワークを呼び出します。呼出しの中で、アプリケーション・コンポーネントは、サブジェクト(誰がリクエストしているのか)、WebLogicリソース(何をリクエストしているのか)、およびWebLogicリソースにアクセスするために必要な資格証明のタイプについての情報を渡します。
-
WebLogicセキュリティ・フレームワークは、資格証明に対するアプリケーション・コンポーネントのリクエストを構成済資格証明マッピング・プロバイダに送信します。トークンをサポートするかどうかは、資格証明マッピング・プロバイダによって異なります。トークンをサポートしている場合は、その処理が行われます。
-
資格証明マッピング・プロバイダは、レガシー・システムのデータベースを照会して、アプリケーション・コンポーネントがリクエストしているものに一致する資格証明群を取得します。
-
資格証明マッピング・プロバイダは、資格証明をWebLogicセキュリティ・フレームワークに返します。
-
WebLogicセキュリティ・フレームワークは、リソース・コンテナを通じてリクエスト側のアプリケーション・コンポーネントに資格証明を返します。
アプリケーション・コンポーネントは、資格証明を使用して外部システムにアクセスします。外部システムには、OracleやSQL Serverなどのデータベース・リソースがあります。
カスタム資格証明マッピング・プロバイダを開発する必要があるか
WebLogic Serverのデフォルト(つまりアクティブな)セキュリティ・レルムにはWebLogic資格証明マッピング・プロバイダが含まれています。WebLogic資格証明マッピング・プロバイダは、WebLogic Serverのユーザーおよびグループを、他の外部システムが必要とする適切なユーザー名/パスワード資格証明にマップします。必要な資格証明マッピングがWebLogic Serverのユーザーおよびグループと他のシステムのユーザー名/パスワードとの間のマッピングであれば、WebLogic資格証明マッピング・プロバイダで十分です。
WebLogic Serverには、PKI資格証明マッピング・プロバイダがあります。WebLogic ServerのPKI (公開キー・インフラストラクチャ)資格証明マッピング・プロバイダは、WebLogic Serverのサブジェクト(イニシエータ)とターゲット・リソース(および必要であれば資格証明アクション)を、ターゲットとなるリソースを使用する際にアプリケーションで使用するキー・ペアまたは公開証明書にマップします。PKI資格証明マッピング・プロバイダは、サブジェクトとリソース名を使用して対応する資格証明をキーストアから検索します。PKI資格証明マッピング・プロバイダで使用可能なトークンの種類はCredentialMapperV2.PKI_KEY_PAIR_TYPE
とCredentialMapperV2.PKI_TRUSTED_CERTIFICATE_TYPE
です。
また、WebLogic ServerにはSAML資格証明マッピング・プロバイダが含まれています。SAML資格証明マッピング・プロバイダでは、ターゲットのサイトまたはリソースに基づく認証されたサブジェクトに対するSAML 1.1および2.0アサーションを生成します。要求されたターゲットが、構成されておらず、デフォルトが設定されていない場合、アサーションは生成されません。ユーザー情報およびグループ・メンバーシップは、(そのように構成された場合)AttributeStatement内に置かれます。
WebLogicセキュリティ・サービスによるアプリケーションの開発のSAML SSO属性サポートの構成で説明されているように、WebLogic Serverでは、追加属性(グループ情報以外)を取得してSAMLアサーションに書き込んだり、着信SAMLアサーションからの属性のマップを可能にするカスタム属性マッパーの使用をサポートするために、SAML 1.1および2.0の資格証明マッピング・プロバイダとIDアサーション・プロバイダのメカニズムが強化されています。
SAML資格証明マッピング・プロバイダで使用可能なトークンの種類はCredentialMapperV2.SAML_ASSERTION_B64_TYPE
、CredentialMapperV2.SAML_ASSERTION_DOM_TYPE
、およびCredentialMapperV2.SAML_ASSERTION_TYPE
です。
SAML 2.0資格証明マッピング・プロバイダでは、CredentialMapperV2.SAML2_ASSERTION_DOM_TYPE
トークン・タイプおよびCredentialMapperV2.SAML2_ASSERTION_TYPE
トークン・タイプがサポートされています。
初期状態の資格証明マッピング・プロバイダが開発者のニーズを満たさない場合は、カスタム資格証明マッピング・プロバイダを開発する必要があります。ただし、WebLogic Serverリソース・コンテナでリクエストされるのは、次のトークンの種類のみです。
-
CredentialMapperV2.PASSWORD_TYPE
-
CredentialMapperV2.PKI_KEY_PAIR_TYPE
-
CredentialMapperV2.PKI_TRUSTED_CERTIFICATE_TYPE
-
CredentialMapperV2.SAML_ASSERTION_B64_TYPE
-
CredentialMapperV2.SAML_ASSERTION_DOM_TYPE
-
CredentialMapperV2.SAML_ASSERTION_TYPE
-
CredentialMapperV2.SAML2_ASSERTION_DOM_TYPE
-
CredentialMapperV2.SAML2_ASSERTION_TYPE
-
CredentialMapperV2.USER_PASSWORD_TYPE
カスタム資格証明マッピング・プロバイダでアプリケーションのバージョン管理をサポートする必要があるか
セキュリティ・レルムのすべての認可プロバイダ、ロール・マッピング・プロバイダ、および資格証明マッピング・プロバイダは、アプリケーションのデプロイにバージョンを使用するために、アプリケーションのバージョン管理をサポートする必要があります。認可、ロール・マッピングまたは資格証明マッピング用にカスタム・セキュリティ・プロバイダを開発する際に、バージョン管理されたアプリケーションをサポートする必要がある場合は、「バージョン管理可能なアプリケーションのプロバイダ」の説明に従って、バージョン管理可能なアプリケーションのSSPIを実装する必要があります。
カスタム資格証明マッピング・プロバイダの開発方法
WebLogic資格証明マッピング・プロバイダが開発者のニーズを満たさない場合、次のステップでカスタム資格証明マッピング・プロバイダを開発することができます。
-
「WebLogic MBeanMakerを使用してMBeanタイプを生成する」で説明されているステップを実行してカスタム資格証明マッピング・プロバイダのMBeanタイプを生成
適切なSSPIによるランタイム・クラスの作成
ランタイム・クラスを作成する前に、以下の作業が必要です。
この情報を理解し、設計に関する判断を下したら、次のステップでカスタム資格証明マッピング・プロバイダのランタイム・クラスを作成します。
CredentialProviderV2 SSPIの実装
CredentialProviderV2
SSPIを実装するには、Provider SSPIの目的についてで説明されているメソッドおよび次のメソッドの実装を提供する必要があります。
-
getCredentialProvider
public CredentialMapperV2 getCredentialProvider();
getCredentialProviderV2
メソッドはCredentialMapperV2
SSPIの実装を取得します。(図2-3にあるような)MyCredentialMapperProviderImpl
.java
という単一のランタイム・クラスの場合、getCredentialProvider
メソッドの実装は次のようになります:return this;
ランタイム・クラスが2つの場合、
getCredentialProvider
メソッドの実装は次のようになります。return new MyCredentialMapperImpl;
これは、
CredentialProviderV2
SSPIを実装するランタイム・クラスが、CredentialMapperV2
SSPIを実装するクラスを取得する場合のファクトリとして使用されるためです。
CredentialProviderV2 SSPIについては、Oracle WebLogic Server Java APIリファレンスを参照してください。
DeployableCredentialProvider SSPIの実装
ノート:
DeployableCredentialProvider SSPIは、このリリースのWebLogic Serverでは非推奨になっています。
DeployableCredentialProvider
SSPIを実装するには、Provider SSPIの目的について、CredentialProviderV2 SSPIの実装で説明されているメソッドおよび次のメソッドの実装を提供する必要があります。
-
deployCredentialMapping
public void deployCredentialMapping(Resource resource, String initiatingPrincipal, String eisUsername, String eisPassword)throws ResourceCreationException;
deployCredentialMapping
メソッドは資格証明マップをデプロイします。マッピングがすでに存在する場合、マッピングは削除され、このマッピングによって置き換えられます。resource
パラメータは、String
で表される開始元プリンシパルがアクセスをリクエストしているWebLogicリソースを表します。エンタープライズ情報システム(EIS)のユーザー名およびパスワードは、資格証明のマップ先のレガシー・システム(リモート・システム)における資格証明です。 -
undeployCredentialMappings
public void undeployCredentialMappings(Resource resource) throws ResourceRemovalException;
undeployCredentialMappings
メソッドは、資格証明マップをアンデプロイします(つまり、アンデプロイ済みのリソース・アダプタにかわって資格証明マッピングをデータベースから削除します)。resource
パラメータは、マッピングを削除するWebLogicリソースを表します。ノート:
deployCredentialMappingメソッド、およびundeployCredentialMappingsメソッドは、ユーザー名/パスワード資格証明のみを操作します。
Oracle WebLogic Server Java APIリファレンスを参照してください。
CredentialMapperV2 SSPIの実装
CredentialMapperV2
インタフェースは、アプリケーション内でスコープが指定されている特定のリソースに対して適切な資格証明群の取得が可能なオブジェクトのセキュリティ・サービス・プロバイダ・インタフェース(SSPI)を定義します。
以下の資格証明の種類のみがサポートされており、CredentialMapperV2
インタフェースに渡されます。
-
PASSWORD_TYPE
-
PKI_KEY_PAIR_TYPE
-
PKI_TRUSTED_CERTIFICATE_TYPE
-
SAML_ASSERTION_B64_TYPE
-
SAML_ASSERTION_DOM_TYPE
-
SAML_ASSERTION_TYPE
-
SAML2_ASSERTION_DOM_TYPE
-
SAML2_ASSERTION_TYPE
-
USER_PASSWORD_TYPE
CredentialMapperV2
SSPIを実装するには、以下のメソッドの実装を提供する必要があります。
-
getCredential
public Object getCredential(Subject requestor, String initiator, Resource resource, ContextHandler handler, String credType);
getCredential
メソッドは、指定したイニシエータに関連付けられているターゲット・リソースから、指定した種類の資格証明を返します。 -
getCredentials
public Object[] getCredentials(Subject requestor, Subject initiator, Resource resource, ContextHandler handler, String credType);
getCredentials
メソッドは、指定したイニシエータに関連付けられているターゲット・リソースから、指定した種類の資格証明を複数返します。
CredentialMapperV2 SSPIについては、Oracle WebLogic Server Java APIリファレンスを参照してください。
資格証明マップを管理するためのメカニズムの提供
WebLogic Server管理コンソールを使用してカスタム資格証明マッピング・プロバイダを構成すると、資格証明マッピング・サービスを必要とするアプリケーションからアクセスできるようにすることはできますが、このセキュリティ・プロバイダに関連付けられた資格証明マップを管理する方法を管理者にも提供する必要があります。たとえば、WebLogic資格証明マッピング・プロバイダには、資格証明マッピング・ページが管理者向けに用意されており、様々なコネクタ・モジュールの資格証明マッピングを追加、変更、または削除することができます。
カスタム資格証明マッピング・プロバイダを開発すると、管理者は資格証明マッピング・ページも右クリック・メニューも利用できません。したがって、資格証明マップを管理するための独自のメカニズムを提供する必要があります。このメカニズムでは、カスタム資格証明マッピング・プロバイダのデータベースの資格証明マップを読み書きできなければなりません。
それには、以下の2通りの方法があります。
オプション1 :資格証明マップ管理用のスタンドアロン・ツールの開発
WebLogic Server管理コンソールとまったく別のツールを開発する場合には、この方法を選択します。
この方法では、カスタム資格証明マッピング・プロバイダ向けにコンソール拡張を作成する必要も、管理MBeanを開発する必要もありません。ただし、ツールでは以下のことを行う必要があります。
-
WebLogicリソースのIDを特定します。IDがコンソール拡張によって自動的に提供されないためです。「WebLogicリソース識別子」を参照してください。
-
ローカル・ユーザーとリモート・ユーザーとの関係を表す方法を特定します。この表現は完全に任意であり、文字列である必要はありません。
-
カスタム資格証明マッピング・プロバイダのデータベースの式を読み書きします。
オプション2 : 管理コンソールに既存の資格証明マップ管理ツールの統合
WebLogic Server管理コンソールとは別のツールを持っているが、そのツールをWebLogic Server管理コンソールから起動する場合には、通常、この方法を選択します。
この方法の場合、ツールでは以下のことを行う必要があります。
-
WebLogicリソースのIDを特定します。「WebLogicリソース識別子」を参照してください。
-
ローカル・ユーザーとリモート・ユーザーとの関係を表す方法を特定します。この表現は完全に任意であり、文字列である必要はありません。
-
カスタム資格証明マッピング・プロバイダのデータベースの式を読み書きします。
-
基本的なコンソール拡張方法を使用して、WebLogic Server管理コンソールにリンクします。