Skip navigation.

WebLogic Portal での WSRP の使用

  前 次 前と次、目次/インデックス/pdf を分けるコロン 目次  

WSRP のセキュリティの確立

WSRP 標準では、現在具体的なセキュリティ標準は施行されていませんが、WSRP 準拠のポートレットの実装時には WS-Security や SAML などのセキュリティ標準に従うように推奨されています。WSRP 標準では、コンシューマがエンドユーザに代わってプロデューサを呼び出す場合のセキュリティの問題に対処するために、SSL/TLS などの転送レベルのセキュリティ標準の使用が強く推奨されています。これらのセキュリティ標準では、プロデューサの WSDL で HTTPS サービスのエントリ ポイント用のポートを宣言することが要求されているだけです。コンシューマでは、サービスのエントリ ポイントのアクセス制御については、URL を解析することにより、セキュアな転送がサポートされているかどうかを判別することしかできません。

注意 : ポートレットが Web アプリケーション リソースを使用する場合、それらのリソースに対してはセキュリティ制約が適用されないというのは、J2EE セキュリティの一般的な制限です。この制限は、リモート ポートレットとローカル ポートレットの両方に該当します。この制限に対処するために、コンシューマ ポータルに対して資格を使用し、特定のコンテンツへのアクセスを制限することをお勧めします。

この節では、実行をお勧めするいくつかのセキュリティ対策について説明します。ここでは、以下のトピックについて説明します。

 


アクセス制御

実装されたセキュリティ対策を実施することにより、プロデューサとコンシューマの両方でアクセスを制御できるようになります。

 


セキュリティに関する推奨事項

WSRP 標準ではセキュリティ要件は指定されていませんが、以下の推奨事項は WSRP 準拠のポートレットのセキュアな実装を確実に行うためのガイドラインになります。

 


リソースに対するセキュリティ制約の設定

基本的なルールおよびベスト プラクティスとして、管理者はプロダクション環境で実行するすべての Web アプリケーションとそのリソースを保護する必要があります。セキュリティが特に重要となるのは、WSRP でリソース URL (プロデューサのファイルや画像へのリンク) を使用する場合です。WSRP 1.0 仕様に従って、リソース URL は絶対 URL であり、最終的な URL の一部となります。これは、wsrp-url パラメータで確認できます。

ブラウザでポータル ページのソースを表示すると、リソース URL がわかります。これらの URL により、プロデューサ マシン上の Web アプリケーション ホストへの URL が提供されるため、プロデューサ上のすべてのリソースを保護することが重要です。たとえば、この情報を使用して、ユーザがプロデューサ上の WebLogic Server Console などの URL を推測し、直接にアクセスを試みる可能性があります。

警告 : プロデューサの管理者は、Web アプリケーションとリソースを適切に保護する必要があります。

WebLogic Server へのセキュリティ制約の追加については、以下の URL にある「URL (Web) リソースおよび EJB (エンタープライズ JavaBean) リソース」および「security-constraint」を参照してください。

http://edocs.beasys.co.jp/e-docs/wls/docs81/secwlres/types.html#1208206
http://edocs.beasys.co.jp/e-docs/wls/docs81/webapp/web_xml.html#1017885

 


リソース接続フィルタの作成

前の節で説明したように、wsrp-url パラメータはプロデューサ マシンのリソース URL を公開します。

デフォルトでは、コンシューマは、コンシューマが現在認識している WSRP プロデューサのホスト マシンでホストされている URL へのアクセスを許可します。これらのプロデューサは、WebLogic Workshop、Portal Administration Portal、または WebLogic Portal API でコンシューマに追加されたものです。このデフォルトの動作をオーバーライドするには、次の手順を実行します。

  1. コンシューマで、com.bea.wsrp.consumer.resource.ResourceConnectionFilter インタフェースを実装するクラスを作成します。このインタフェースにはメソッドが 1 つ含まれます。
  2. public boolean allowedURL(String url);

    このメソッドを実装すると、wsrp-url パラメータによるアクセスを許可する URL の場合にのみ true を返します。

    この実装クラス ファイルを WEB-INF/lib/classes に置きます。たとえば、WEB-INF/lib/classes/MyResourceProxyServletImpl.class です。

  3. このクラスをコンシューマの ResourceProxyServlet に登録します。そのためには、コンシューマ Web アプリケーションの WEB-INF/web.xml ファイルの ResourceProxyServlet 定義に <init-param> 要素を追加します。<param-name>resourceConnectionFilter に、<param-value> は ResourceConnectionFilter 実装クラスの完全修飾クラス名に設定する必要があります。
  4. コード リスト 9-1 は、ResourceProxyServlet サーブレット定義のサンプルを示します。

コード リスト 9-1 ResourceProxyServlet のコンフィグレーション (WEB-INF/web.xml)

<servlet>
   <servlet-name>ResourceProxyServlet</servlet-name>
   <servlet-class>com.bea.wsrp.consumer.resource.ResourceProxyServlet</servlet-class>
   <init-param>
      <param-name>resourceConnectionFilter</param-name>
      <param-value>myClasses.MyResourceProxyServletImpl</param-value>
   </init-param>
</servlet>

 


WSRP メッセージの安全確保

WSRP メッセージの安全確保により、関係者間のみで機密を保持できます。ポートレットのメッセージングの安全確保を行うと、そのポートレットのメッセージの内容を処理することを許可された人物のみがメッセージを見ることができます。WSRP メッセージの安全を確保するには

コード リスト 9-2 セキュリティ用にコンフィグレーションされた <service-config> 要素

<service-config>
<registration required="true" secure="true"/>
<service-description secure="true"/>
<markup secure="true" rewrite-urls="true" transport="string"/>
<portlet-management required="true" secure="true"/>
</service-config>

注意 : wsrp-producer-config.xml を変更した場合、変更をアクティブにするにはサーバを再デプロイまたはバウンスする必要があります。

 


ユーザ ID の管理

ユーザ ID を管理するには

シングル サインオンとは

シングル サインオン (SSO) は、1 回のアクションでユーザの認証と許可を行い、アクセス パーミッションが付与されているすべてのコンピュータやシステムにユーザがアクセスできるようにするメカニズムです。複数のパスワードを入力する必要がありません。シングル サインオンは、システム障害の大きな要因である人的エラーを削減する機能です。

WSRP でのシングル サインオンの動作

SSO サポートは、コンシューマからプロデューサにユーザ ID を伝播するためのものです。つまり、コンシューマが認証を行い、WSRP スタックは、ユーザが対話する各プロデューサで同じユーザ ID が確立されるようにします。実際の動作を確認する最適な方法は、プロデューサ側またはコンシューマ側の SOAP メッセージ ログをモニタすることです。コンシューマ側でのログイン後、各リクエストには追加の SOAP ヘッダが含まれています。

各 Web アプリケーションには、SOAP メッセージを記録するモニタがあります。モニタを表示するには、http://<machine>:<port>/<webapp>/monitor にアクセスしてください。SOAP メッセージのモニタの詳細については、次の URL にある「プロデューサおよびコンシューマのメッセージ ログのモニタ」を参照してください。

http://edocs.beasys.co.jp/e-docs/wlp/docs81/wsrp/monlog.html#999496

署名付き証明書

プロデューサは、クライアント証明書と SSL/TLS を組み合わせて使用することによってコンシューマを認証します。したがって、推奨に従って SSO を使用し、ユーザがコンシューマ ポータルにログインできるようにしている場合は、プロデューサはそのコンシューマを信頼する必要があります。この信頼を確立するために、コンシューマに VeriSign, Inc. などの承認された認証局 (CA) によって署名された認証証明書が必要です。この節では、Java keytool ユーティリティを使用して自己署名証明書を生成する方法を説明します。この章の後半では、CA からの署名付き証明書の取得も含め、keytool の詳しい使用例を示します。

Java keytool ユーティリティ

WebLogic Platform をインストールすると、インストール プロセスの一部として、Java 実行時環境 (Java Runtime Environment : JRE) がインストールされます。JRE 内には、keytool.exe というユーティリティが含まれます。keytool は、鍵と証明書の管理ユーティリティで、これを使用して、公開鍵/プライベート キーのペア、およびこれらに関連付けられた自己認証 (ユーザが他のユーザやサービスに対して自分自身を認証すること) 用の証明書を管理したり、デジタル署名を使用してデータの整合性や認証サービスを管理することができます。

keytool の概念と用語

WSRP 準拠のポートレットでセキュリティを実装する際には、以下の用語について理解しておく必要があります。

証明書

公開鍵証明書とも呼ばれる。あるエンティティ (発行者) からのデジタル署名されたステートメントで、別のエンティティ (サブジェクト) の公開鍵 (およびその他の情報) が何らかの特定の値を持っていることを示します。

認証局 (CA)

証明書署名要求 (Certificate Signing Request : CSR) を受け付け、要求者に証明書または証明書チェーンを返す、VeriSign, Inc. などの組織。

証明書チェーン

共通の認証局までさかのぼって信頼を確立するために使用される一連の証明書。チェーン内の最初の証明書には、プライベート キーに対応する公開鍵が含まれます。

証明書署名要求 (CSR)

認証局に送られるファイル。認証局は、証明書要求者 (通常オフライン) を認証し、要求者に証明書または証明書チェーンを返します。CSR は、キーストア内の既存の証明書チェーン (最初は自己署名証明書で構成される) を置き換えるために使用されます。

鍵ペア

同じ証明書の公開鍵とプライベート キーの組み合わせ。

キーストア

プライベート キー、およびそれに関連付けられた X.509 証明書チェーン (プライベート キーに対応する公開鍵の認証に使用される) のデータベース。キーストア ファイルには、拡張子 .jks が付きます。このキーストアのスコープはドメインであるため、キーストアは <BEA_HOME>/user_projects/domains/specificDomain フォルダ (specificDomain は、安全確保するポイントを含むアプリケーションのドメイン) にあります。WebLogic Platform には、wsrpKeystore.jks という名前のデフォルトのキーストアが含まれています。このファイルを実行する予定のドメインごとに、ファイル名を変更することを強くお勧めします。名前を変更しないと、アプリケーションのセキュリティが損なわれます。

自己署名証明書

発行者とサブジェクト (その公開鍵が証明書によって認証されているエンティティ) が同じ証明書。-genkey で新しい公開鍵/プライベート キーのペアが生成されると、公開鍵は自己署名証明書に入れられます。

keytool のリファレンス

keytool は、Sun Microsystems によって作成されたものです。このユーティリティの詳細については、以下の URL にある「keytool - Key and Certificate Management Tool 」を参照してください。

http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/keytool.html

/producer パスの安全確保

デフォルトでは、プロデューサ サーブレットは保護されていません。プロデューサへのアクセスを制限するには、パス <webAppPath>/producer をネットワークまたはファイアウォール レベルで保護します (webAppPath は Web アプリケーションの URL)。

 


リモート ポートレットでのシングル サインオンの確立 : 例

以下の例は、コンシューマからプロデューサへの SSO を確立する方法を示します。この単純な例では、コンシューマのローカル ポートレットからリモート ポートレットにログインできるようにします。

この例では、次の手順に従います。

  1. 例を実行する環境 (ドメイン、ポータル アプリケーション、および ポータル Web アプリケーション) を設定します。
  2. ログイン ポートレットを作成し、BEA WebLogic Portal 8.1 で提供される署名付き証明書を使用してリモート ポートレットでの SSO を確立します。
  3. 同じリモート ポートレットへのログインを防ぐために、このデフォルトのキーストア ファイルを変更します。
  4. Java keytool ユーティリティを使用して、新しいキーストアを作成します (このユーティリティの詳細については、「Java keytool ユーティリティ」を参照してください)。
  5. keytool ユーティリティを使用して、このキーストアの署名付き証明書を認証局 (CA) に要求して取得します。
  6. この署名付き証明書をコンシューマ (ユーザ) とプロデューサの両方に追加します。
  7. 新しい署名付き証明書を使用してリモート ポートレットでの SSO を再確立します。

この実習を行う前に、前の節「ユーザ ID の管理」を必ず読んでください。

手順 1 : 環境の設定

この例で必要な環境を設定するには、「リモート ポートレットでのポートレット間通信の確立」の「手順 1 : 環境の設定」を参照してください。この節の手順に従います。すでに「手順 1: 環境の設定」どおりに環境を設定している場合は、この手順を実行する必要はありません。

注意 : <BEA_HOME>/user_projects フォルダを壊さないように、「リモート ポートレットでのポートレット間通信の確立」と同じ環境を使用することを強くお勧めします。新しいドメインまたはポータル アプリケーション (あるいはその両方) でこの実習を行う場合は、次の手順でコンポーネントに選択する名前を置き換えてください。

手順 2 : ログイン ポートレットの作成とリモート ポートレットでの SSO の確立

この手順では、BEA 提供のログイン コントローラ ページ フローを使用して、ログイン ポートレットをコンシューマに作成します。また、単純な JSP ポートレットをプロデューサに作成します。次に、JSP ポートレットとコンシューマを結合します。その後、ログイン ポートレットを使用してリモート ポートレットへのログインを試行します。

ログイン ページ フロー ポートレットの作成

  1. WebLogic Workshop を起動し、アプリケーション ipcWsrpTest を開きます。
  2. [consumerWeb] を右クリックしてコンテキスト メニューを開き、[新規作成|ページ フロー] を選択します。
  3. [ページ フロー ウィザード - ページ フロー名] ダイアログ ボックスが表示されます (図 9-1)。

    図 9-1 [ページ フロー ウィザード - ページ フロー名] ダイアログ ボックス


     
  4. [ページ フロー名] に login と入力します。
  5. [コントローラ名] が LoginController.jpf に変わります。

  6. [次へ] をクリックします。
  7. [ページ フロー ウィザード - ページ フロー タイプを選択] ダイアログ ボックスが表示されます (図 9-2)

    図 9-2 [ページ フロー ウィザード - ページ フロー タイプを選択] ダイアログ ボックス


     
  8. [Java コントロールからのページ フロー] を選択し、[Java コントロール] リストで [User Login] を選択します。
  9. [次へ] をクリックします。
  10. [ページ フロー ウィザード - アクションを選択] ダイアログ ボックスが表示されます (図 9-3)。

    図 9-3 [ページ フロー ウィザード - アクションを選択] ダイアログ ボックス


     
  11. [すべて選択] をクリックし、[作成] をクリックします。
  12. ページ フロー ファイルが作成されます。LoginController.jpf がアプリケーション ツリーの consumerWeb の下に表示され、ページ フロー図が IDE ワークスペースに表示されます (図 9-4)。

    図 9-4 IDE ワークスペースでの LoginController.jpf ページ フロー


     
  13. [ソース ビュー] をクリックしてページ フローのコードを表示します (図 9-5)。
  14. 図 9-5 LoginController.jpf のソース


     
  15. public Forward login(LoginForm aForm) 呼び出しで、次の文字列を確認します。
com.bea.p13n.usermgmt.profile.ProfileWrapper var = myControl.login
(aForm.username, aForm.password, aForm.request );

これを、次の文字列で置き換えます。

com.bea.p13n.usermgmt.profile.ProfileWrapper var = myControl.login
(aForm.username, aForm.password, super.getRequest() );

呼び出しは、コード リスト 9-2 の例のようになります。


 

コード リスト 9-3 更新された Forward login(LoginForm aForm) 呼び出し

 public Forward login(LoginForm aForm)
throws Exception
{
com.bea.p13n.usermgmt.profile.ProfileWrapper var =
myControl.login(aForm.username, aForm.password,
super.getRequest() );
getRequest().setAttribute("results", var);
        return new Forward("success");
}
  1. ファイルを保存します。
  2. LoginController.jpf がアプリケーション ツリーの consumerWeb/login の下に表示されます (/login は LoginController.jpf を保存したときに作成されます。図 9-6 を参照)。

    図 9-6 consumerWeb/login 内の LoginController.jpf


     
  3. アプリケーション ツリーで [LoginController.jpf] を右クリックしてコンテキスト メニューを開き、[ポートレットの生成] を選択します。
  4. ポートレット ウィザードの [ポートレットの詳細] ダイアログ ボックスが表示されます (図 9-7)。

    図 9-7 LoginController.jpf のポートレット ウィザードの [ポートレットの詳細] ダイアログ ボックス


     

    LoginController.jpf が [コンテンツ URI] フィールドにすでに表示されています。

  5. [完了] をクリックします。
  6. ポートレットが生成されます。LoginController.portlet がアプリケーション ツリーの consumerWeb/login の下に表示されます。

  7. すべてのファイルを保存します。

ログイン ポータルの作成

この手順では、「ログイン ページ フロー ポートレットの作成」で作成したログイン ポートレットを含めるポータルを作成します。

  1. アプリケーション ツリーで [consumerWeb] ノードを右クリックしてコンテキスト メニューを開き、[新規作成|ポータル] を選択します。
  2. [新しいファイル] ダイアログ ボックスが表示されます。

  3. 両方のペインでポータルが選択されていることを確認し、[ファイル名] に login と入力して、[作成] をクリックします。
  4. login.portal がアプリケーション ツリーの consumerWeb/login の下に表示され、ポータルのレイアウトが WebLogic Workshop ワークスペースに表示されます (図 9-8)。

    図 9-8 WebLogic Workshop ワークスペースでの login.portal


     
  5. 図 9-9 のように、データ パレットの [LoginController.portlet] をポータル レイアウトの左側の欄にドラッグします。
  6. 図 9-9 ポータル レイアウトでの LoginController.portlet


     
  7. ポータルを保存します。

プロデューサでのポートレットの作成

次に、プロデューサに JSP ファイルとポートレットを作成します。これは、「ログイン ポータルの作成」で作成したコンシューマ ポータルに結合するポートレットです。また、ログイン ポータルをテストするときは、このポートレットへのログインを試行します。

  1. プロデューサにポートレットを作成するには、次の手順に従います。
  2. [producerWeb] を右クリックし、[新規作成|JSP ファイル] を選択します。
  3. [新しいファイル] ダイアログ ボックスが表示されます。

  4. [Web User Interface] と [JSP ファイル] がそれぞれ左側のペインと右側のペインで選択されていることを確認し、[ファイル名] に cPortlet.jsp と入力して、[作成] をクリックします。
  5. cPportlet.jsp が WebLogic Workshop ワークスペースに表示されます (図 9-10)。

    図 9-10 デザイン ビューでの cPortlet.jsp


     
  6. [ソース ビュー] をクリックして cPortlet.jsp の JSP コードを表示します (図 9-11)。
  7. 図 9-11 ソース ビューでの cPortlet


     
  8. コード リスト 9-3 のコードをコピーして、既存の cPortlet.jsp ソース コードと置き換えます。

コード リスト 9-4 cPortlet.jsp のソース

<%
String username=null;
if(request.getUserPrincipal() !=null ){
username=request.getUserPrincipal().getName();
}
%>
Username = <%=username%>

WebLogic Workshop ワークスペースは、図 9-12 の例のようになります。

図 9-12 cPortlet.jsp の新しいソース


 
  1. ファイルを保存します。
  2. cPortlet.jsp がアプリケーション ツリーの producerWeb の下に表示されます。

  3. アプリケーション ツリーで [cPortlet.jsp] を右クリックしてコンテキスト メニューを表示し、[ポートレットの生成] を選択します。
  4. cPortlet.jsp の [ポートレットの詳細] ダイアログ ボックスが表示されます (図 9-13)。

    図 9-13 cPortlet.jsp の [ポートレットの詳細] ダイアログ ボックス


     

    cPortlet.jsp が [コンテンツ URI] ダイアログ ボックスに表示されています。

  5. [完了] をクリックします。
  6. cPortlet.portlet がアプリケーション ツリーの producerWeb の下に表示されます。

プロデューサ ポートレットのコンシューマへの結合

次は、「プロデューサでのポートレットの作成」で作成した JSP ポートレットをコンシューマに表示しますそのためには、次の手順に従います。

注意 : WebLogic Workshop が実行中であることを確認します。

  1. 実行中でない場合は、[ツール|WebLogic Server|WebLogic Server の起動] を選択します。
  2. [consumerWeb] を右クリックし、[新規作成|ポートレット] を選択します。
  3. [新しいファイル] ダイアログ ボックスが表示されます。

  4. [Portal] と [ポートレット] が選択されていることを確認し、[ファイル名] に cPrime と入力して [作成] をクリックします。
  5. [ポートレット タイプの選択] ダイアログ ボックスが表示されます。

    図 9-14 [ポートレット タイプの選択] ダイアログ ボックス


     
  6. [リモート ポートレット] を選択し、[次へ] をクリックします。
  7. [プロデューサの検索] セクションと [プロデューサの選択] セクションがあるダイアログ ボックスが表示されます (図 9-15)。[プロデューサの検索] があらかじめ選択されています。

    図 9-15 [プロデューサの検索] または [プロデューサの選択] ダイアログ ボックス


     
  8. [プロデューサの検索] フィールドに次のように入力します。
  9. http://localhost:7001/producerWeb/producer?WSDL

    [検索] をクリックします。

    ダイアログ ボックスが更新され、プロデューサの詳細が表示されます。

  10. [登録] をクリックします。
  11. [登録] ダイアログ ボックスが表示されます。


     


     
  12. [プロデューサ ハンドル] に ssoTest と入力し、[登録] をクリックします。
  13. [プロデューサの検索] または [プロデューサの選択] ダイアログ ボックスが再び表示されます。

  14. [次へ] をクリックします。
  15. [リストからポートレットを選択] ダイアログ ボックスが表示されます (図 9-16)。

    図 9-16 [リストからポートレットを選択] ダイアログ ボックス


     
  16. リストから cPortlet を選択し、[次へ] をクリックします。
  17. [プロキシ ポートレット詳細] ダイアログ ボックスが表示されます。

  18. [完了] をクリックします。
  19. cPrime.portlet がアプリケーション ツリーの consumerWeb の下に表示され、ポートレットのレイアウトが WebLogic Workshop ワークスペースに表示されます (図 9-17)。

    図 9-17 cPrime ポートレットのレイアウト


     
  20. ファイルを保存します。

ログイン ポートレットのテスト

最後に、リモート ポートレットにログインできることを確認するために、「ログイン ページ フロー ポートレットの作成」で作成したログイン ポートレットをテストする必要があります。テストが成功したら、アプリケーションを「分割」します。これで、リモート ポートレットへのログインを防ぎます。

注意 : WebLogic Server が実行中であることを確認します。

このテストを実行するには、次の手順に従います。

  1. consumerWeb の [login.portal] をダブルクリックします。
  2. ポータルのレイアウトが WebLogic Workshop ワークスペースに表示されます。

  3. データ パレットの [cPortlet] をポータルの右側のプレースホルダにドラッグします (図 9-18)。cPortlet は、データ パレットで識別される cPrime.portlet の名前です。データ パレットが表示されていない場合は、[表示|ウィンドウ|データ パレット] を選択します。
  4. 図 9-18 cPortlet が追加された login.portal


     
  5. ポータルを保存します。
  6. [ポータル] メニューを開き、[現在のポータルを開く] を選択します。
  7. しばらくすると、ポータルがブラウザに表示されます (図 9-19)。

    図 9-19 ブラウザに表示された login.portal


     

cPortlet には「Username = null」というテキストが表示されています。

  1. LoginController で [login] をクリックします。
  2. LoginController が更新され、ログインのためのフィールドが表示されます (図 9-20)。

    図 9-20 LoginController.portlet のログイン フィールド


     

    [Password] と [Username] の両方に weblogic と入力し、[Submit] をクリックします。

    ポータルが更新されます。cPortlet には「Username = weblogic」と表示されます。

    図 9-21 ログイン成功時の login.portal


     
  3. ポータルを閉じます。
  4. WebLogic Server を停止します。

まとめ

この手順では、ポータルを構築するために必要なすべてのコンポーネントを作成しました。これにより、プロデューサからこのポータルに結合されたポートレットにログインすることができます。次に、デフォルトのリソースを組み合わせてログイン ポータルを構築し、ポータルをブラウザに表示し、リモート ポートレットにログインしました。次の手順では、このポータルを「分割」します。

手順 3 : ログイン ポータルの分割

この手順では、キーストア ファイルの名前を変更します。名前の変更により、login.portal でのリモート ポートレットへのログインを防ぎます。次に、ポータルへのログインを試行して、ログインに失敗することで、ポータルにログインできないことを確認します。

.jks ファイルの名前変更

.jks ファイルの名前を変更するには、次の手順に従います。

注意 : WebLogic Workshop が実行中であることを確認します。

  1. ファイル システム (たとえば Windows エクスプローラ) を開き、次のフォルダにナビゲートして、内容を表示します。
  2. <BEA_HOME>/user_projects/domains/ipcWsrpTest
  3. ファイルのリストで wsrpKeystore.jks を確認します。
  4. 名前を wsrpkeystore.jks から wsrpkeystore_old.jks に変更します。

ポータルの再テスト

ここで、ログイン ポータルを起動し、リモート ポートレットへのログインを再試行します。この手順は、次のとおりです。

  1. WebLogic Workshop に戻り、Weblogic Server を再起動します。
  2. 注意 : アプリケーション ipcWsrpTest が開いている必要があります。

  3. consumerWeb の下の [login.portal] をダブルクリックして、ポータルを WebLogic Workshop で開きます (WebLogic Workshop を起動したときに login.portal がすでに開いている場合は、この手順を省略できます)。
  4. [ポータル] メニューを開き、[現在のポータルを開く] を選択します。
  5. ログイン ポータルがブラウザに表示されます。

  6. [login] をクリックします。
  7. [Password] フィールドと [Username] フィールドが表示されます。

  8. 両方の値として weblogic を入力し、[Submit] をクリックします。
  9. ポータルが更新され、cPortlet に「Username = null」と表示されます (つまり、変更されません。図 9-22 を参照)。これはログインが失敗したことを示します。
  10. 図 9-22 ログイン試行失敗時の login.portal


     
  11. ポータルを閉じ、WebLogic Server を終了します。

手順 4 : 署名付き証明書の取得と実装

この手順では、Java keytool ユーティリティを使用して、自己署名証明書を作成し、その過程で新しいキーストアを作成します。次に、証明書署名要求 (CSR) を生成し、その CSR を認証局 (CA) に送信します。CA から返される署名付き証明書を使用して、リモート ポートレットへのログインを確立します。

始める前に

この手順を開始する前に、「Java keytool ユーティリティ」を必ず読んでください。以下の URL にある「keytool - Key and Certificate Management Tool」の情報も確認することをお勧めします。

http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/keytool.html

新しいキーストアの生成

新しいキーストアを生成するには、次の手順に従います。

注意 : <BEA_HOME> は、WebLogic Platform をインストールしたディレクトリです。

  1. コンピュータでコマンド プロンプトを開き、<BEA_HOME>\jdk142_05\bin にナビゲートします。
  2. 注意 : keytool ユーティリティのスコープは使用している JVM です。WebLogic Server の実装のコンフィグレーションで別の JVM を選択した場合 (たとえば BEA WebLogic JRockit)、その JVM のディレクトリに移動して以下のコマンドを実行する必要があります。

  3. コマンドラインで次のように -genkey コマンドを入力して、キーストアを作成します。
  4. <BEA_HOME>\jdk142_05\bin>keytool -genkey -keypass testkeypass -keystore <BEA_HOME>\user_projects\domains\ipcWsrpDomain\wsrpKeystore.jks -storepass teststorepass -alias testalias

    この例では以下の値が使用されます。

http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/keytool.html

keytool のオプションは、必須ではありません。オプションを指定しなかった場合、デフォルト値を持つオプションについてはデフォルトが使用され、必要な値があればプロンプトが表示されます。

  1. ID を証明するために必要なプロンプトに従ってください。
  2. すべての情報を正しく入力すると、<BEA_HOME>\jdk142_05\bin> のようなコマンド プロンプトがシステムによって表示されます。キーストアが正常に生成されたことを確認するには、ファイル システムを使用して、<BEA_HOME>\user_projects\domains\ipcWsrpDomain\wsrpKeystore.jks があることを調べます。

証明書署名要求の作成と署名付き証明書のインポート

これまでに自己署名証明書を生成しました。認証局 (CA) によって署名されている証明書は信頼を得やすくなるため、CA の署名を取得するために証明書署名要求 (CSR) を生成する必要があります。CSR を作成するには、次の手順に従います。

  1. コマンド プロンプトを使用して、<BEA_HOME>\jd142_05\bin にナビゲートします (すでにこのディレクトリに移動している場合は、この手順を無視してください)。
  2. 以下のオプションを使用して keytool -certreq コマンドを入力します。
  3. keytool -certreq -keystore <BEA_HOME>\user_projects\domains\ipcWsrpDomain\wsrpKeystore.jks -alias testalias
    システムが応答し、以下のように表示されます。
    キーストアのパスワードを入力してください: 
  4. teststorepass と入力します。
  5. システムが応答し、以下のように表示されます。
    <mykey> の鍵パスワードを入力してください。
  6. testkeypass と入力します。
  7. これにより、CSR が生成され、応答として CSR を表す一連の文字が表示されます。たとえば、以下のようになります。

-----BEGIN NEW CERTIFICATE REQUEST-----
MIICYzCCAiACAQAwXjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNPMRAwDgYDVQQHEwdCb3VsZGVy
MRQwEgYDVQQKEwtCRUEgU3lzdGVtczENMAsGA1UECxMERG9jczELMAkGA1UEAxMCRWQwggG3MIIB
LAYHKoZIzjgEATCCAR8CgYEA/X9TgR11EilS30qcLuzk5/YRt1I870QAwx4/gLZRJmlFXUAiUftZ
PY1Y+r/F9bow9subVWzXgTuAHTRv8mZgt2uZUKWkn5/oBHsQIsJPu6nX/rfGG/g7V+fGqKYVDwT7
g/bTxR7DAjVUE1oWkTL2dfOuK2HXKu/yIgMZndFIAccCFQCXYFCPFSMLzLKSuYKi64QL8Fgc9QKB
gQD34aCF1ps93su8q1w2uFe5eZSvu/o66oL5V0wLPQeCZ1FZV4661FlP5nEHEIGAtEkWcSPoTCgW
E7fPCTKMyKbhPBZ6i1R8jSjgo64eK7OmdZFuo38L+iE1YvH7YnoBJDvMpPG+qFGQiaiD3+Fa5Z8G
kotmXoB7VSVkAUw7/s9JKgOBhAACgYBkQ10+BRJVVzMgZTQJiUDYdK+5WOI1EkvXbyZPmvYzAfch
vtR7WKJZMPcbAyq9mtrOXFY7TTEkupXlY4R8c5DdLW0db3YB1eV4gUGQOXn4Y+zE8Z4LxKNhkKLk
yEUQhv0JkyzIReV7sioJahf7AiOwqs2cW1r4dNt4y42duwrdsKAAMAsGByqGSM44BAMFAAMwADAt
AhRARh4iBbioO+Jn3qc/bXOpjr+cqgIVAI78/s8hMqhFkTJxt/qtE3L3F1aP
-----END NEW CERTIFICATE REQUEST-----
  1. CSR を VeriSign, Inc. などの認証局 (CA) に送付します。CA は、送付元のユーザを認証し、証明書に署名して、送付元に返します。この証明書は、公開鍵を認証します。
  2. 注意 : .pem ファイルの CA への送付については、このドキュメントでは説明しません。使用できる CA は多数ありますが、会社がすでに特定の CA と契約を結んでいることもあります。契約によって CSR の送付方法が定められます。CA の Web サイトにアクセスして、送付プロセスを確認することもできます。

署名付き証明書のインポート

CA からは、コンシューマ証明書と CA 証明書の 2 つが返されます。CA 証明書は、コンシューマ証明書の CA の署名を保証するために使用されます。keytool -import コマンドを使用して、CA 署名付き証明書とコンシューマ証明書の両方をキーストアに格納します。

注意 : 使用する CA によっては、両方の証明書が 1 つのファイルで返されることがあります。Internet Explorer の証明書インポート/エクスポート ウィザードなど証明書変換ツールを使用して、2 つの証明書に分ける必要があります。このプロセスはこのドキュメントでは説明しません。会社のセキュリティ管理者または使用している CA に問い合わせてください。

これから、コンシューマ証明書と CA 証明書の両方をキーストアにインポートします。インポート コマンドを実行するときは、この後の手順で説明するように、証明書ごとに異なるエリアスを使用する必要があります。

  1. CA から署名付きコンシューマ証明書を取得したら、<BEA_HOME>\user_projects\domains\ipcWsrpDomain\ に .pem ファイル wsrpKeystore.pem として保存します (証明書が CA から .pem ファイルとして返された場合は、この手順を無視してください)。
  2. keytool -import コマンドを使用して、コンシューマ証明書を testalias というキーストア エントリに格納します。これにより、-genkey コマンドで作成した自己署名証明書が置き換わります。次のコマンドを入力します。
keytool -import -alias testalias -file <BEA_HOME>\user_projects\domains\ipcWsrpDomain\wsrpKeystore.pem -keypass testkeypass -keystore <BEA_HOME>\user_projects\domains\ipcWsrpDomain\wsrpKeystore.jks -storepass teststorepass

注意 : -import コマンドの使用方法の詳細については、以下の URL を参照してください。

http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/keytool.html#importCmd

システムが応答し、以下のように表示されます。

Owner: CN=Your Name, OU=WLP Docs, O=WLP, L=Boulder, ST=Colorado, C=US
Issuer: CN=Thawte Test CA Root, OU=TEST TEST TEST, O=CA Name Certification, ST=FO
R TESTING PURPOSES ONLY, C=ZA
Serial number: 121e
Valid from: Mon Dec 13 11:18:17 MST 2004 until: Mon Jan 03 11:18:17 MST 2005
Certificate fingerprints:
MD5: 87:29:4B:7F:02:7D:2B:90:EF:FA:7D:02:50:82:7D:FF
SHA1: 25:08:1E:98:7D:76:31:48:B3:6B:4B:5F:81:24:59:1D:41:CA:A2:DB

以下の質問が表示されます。

この証明書を信頼しますか? [no]:  
  1. yes と入力します。
  2. システムが応答し、以下のように表示されます。

    証明書がキーストアに追加されました。
  3. 手順 1 から手順 3 を繰り返して、CA 証明書をインポートします。CA から取得した CA 証明書を <BEA_HOME>\user_projects\domains\ipcTestDomain\CAcert.pem というファイルに保存します。keytool -import コマンドを実行するとき、.pem ファイル名 (-file) とエリアス (-alias) として以下の値を使用します。
  4. -file <BEA_HOME>\user_projects\domains\ipcTestDomain\CAcert.pem
    -alias CAtestalias

手順 5 : コンシューマ MBean の更新

以下を実行して、コンシューマ MBean を新しい証明書情報で更新します。

  1. WebLogic Workshop で、証明書が適用されるアプリケーションを開きます。
  2. [ツール|WebLogic Server|WebLogic Server の起動] を選択して、WebLogic Server を起動します。
  3. [ポータル|ポータル管理] を選択して、Administration Portal を起動します。
  4. Administration Portal のログイン ページが表示されます。

  5. ユーザ名とパスワードの両方に weblogic を使用して Administration Portal にログインします。
  6. Administration Portal が表示されます。

  7. [コンフィグレーション設定] で、[サービス管理] をクリックします。
  8. コンフィグレーション設定のページが表示されます (図 9-23)。

    図 9-23 コンフィグレーション設定のページ


     
  9. 左側のペインで、[WSRP Consumer Security Service] をクリックします。
  10. 右側のペインに [WSRP Consumer Security Service のコンフィグレーション設定] ダイアログ ボックスが表示されます (図 9-24)。

    図 9-24 [WSRP Consumer Security Service のコンフィグレーション設定] ダイアログ ボックス


     
  11. このダイアログ ボックスの必要なフィールドを、キーストアの情報で更新します。少なくとも、表 9-1 のフィールドは更新する必要があります。

    表 9-1 WSRP Consumer Security Service のコンフィグレーション情報の更新

    フィールド

    [コンシューマ名]

    testalias

    [キーストアのパスワード]

    teststorepass

    [証明書エリアス]

    testalias

    [証明書プライベート キーのパスワード]

    testkeypass

  12. [Update] をクリックします。
  13. サーバを再起動します。

手順 6 : WSRP ID アサータの更新

プロデューサがコンシューマを信頼するためには、コンシューマの署名付き証明書を認識できる必要があります。この認識を確実にするには、プロデューサにコンシューマの公開鍵を提供する必要があります。この公開鍵は、管理者がプロデューサのキーストアに追加する必要があります。

WSRP ID アサータを更新するには、以下の手順を実行します。

  1. WebLogic Server のインスタンスを起動し、ブラウザのアドレス フィールドに次の URL を入力して、WebLogic Server コンソールを開きます。
  2. http://localhost:7001/console

    WebLogic Server Administration Console のログイン ページが表示されます。

  3. ユーザ名 weblogic、パスワード weblogic として Administration Console にログインします。
  4. WebLogic Server Administration Console が表示されます。

  5. 図 9-25 のように、左側のペインで WSRP ID アサータ ノードまでドリル ダウンします ([セキュリティ|レルム|myrealm|プロバイダ|認証|WSRPIndentityAsserter])。
  6. 図 9-25 WSRP ID アサータのドリルダウン


     

    右側のペインに WSRP ID アサータが表示されます。

  7. 図 9-26 のように、[詳細] タブを選択して、WSRP ID の詳細情報を表示します。
  8. 図 9-26 WSRP ID アサータの詳細


     
  9. 表 9-2 のように WSRP ID アサータの情報を更新します。
  10. 表 9-2 WSRP ID アサータの更新

    フィールド

    [キー ストア パス]

    wsrpKeystore.jks

    [キー ストア パスワード]

    teststorepass

    [キー ストア パスワードの確認]

    teststorepass


     
  11. [適用] をクリックします。

注意 : フィールド ラベルの横に黄色のアイコンが点滅している場合は、変更を有効にするためにサーバを再起動する必要があります。

手順 7 : 新しいキーストアのテスト

新しいキーストアをテストするには、「ログイン ポートレットのテスト」と同様にリモート ポートレットへのログインを試行します。次の手順を実行します。

  1. WebLogic Workshop が実行中でない場合は起動します。
  2. サーバを停止して (必要な場合)、再起動します。[ツール|WebLogic Server|WebLogic Server の停止] を選択します (サーバが実行している場合)。[ツール|WebLogic Server|WebLogic Server の起動] を選択して、サーバを起動します。
  3. サーバが起動したら、consumerWeb ノードを表示し、[login.portal] をダブルクリックします (login.portal がすでに開いている場合は、この手順を省略できます)。
  4. [ポータル] メニューを開き、[現在のポータルを開く] を選択します。
  5. login.portal がブラウザに表示されます。

  6. LoginController で [login] をクリックします。
  7. ポートレットが更新され、ログイン フォームが表示されます。

  8. [Username] と [Password] の両方に weblogic と入力し、[Submit] をクリックします。
  9. ポータルが更新されます。cPortlet には「Username = weblogic」と表示されます。

    図 9-27 ログイン成功時の login.portal


     

 


WebLogic 管理者のログオン情報の安全確保

ポータル ドメインのポータル アプリケーションの META-INF ディレクトリには、application-config.xml ファイルが含まれます。ポータル ドメインを新規作成してポータル アプリケーションをデプロイする場合は、このファイルには暗号化されていないパスワードが含まれます。ポータル管理ツールの [サービス管理] ページを使用して、このコンフィグレーション ファイルに含まれる属性を編集して保存するか、パスワードを使用するアプリケーションがコンフィグレーション ファイルにアクセスしない限り、これらのパスワードはクリア テキストのままです (ポータル アプリケーションが ear ファイルとしてデプロイされている場合、このファイルの編集や保存はできません)。

通常、開発時には、管理者は weblogic/weblogic などの一般的なログオン情報 (ログオン ID とパスワード) を使用します。たとえば、コード リスト 9-4 に最初のデプロイメント当初の application-config.xml の WSRP 要素を示します。

コード リスト 9-5 application-config.xml の開発段階のクリア テキスト パスワード

<ConsumerSecurity AdminPassword="weblogic" AdminUserName="weblogic"
CertAlias="wsrpConsumer" CertPrivateKeyPassword="wsrppassword"
ConsumerName="wsrpConsumer"
IdentityAssertionProviderClass="com.bea.wsrp.security.
DefaultIdentityAssertionProvider"
Keystore="wsrpKeystore.jks" KeystorePassword="password"
Name="ConsumerSecurity"/>

[サービス管理] ツールを使用して属性を編集してから、ファイルを保存すると、コード リスト 9-5 のようにパスワードは自動的に暗号化されます。

コード リスト 9-6 application-config.xml の暗号化されたパスワード

<ConsumerSecurity AdminPassword="{3DES}3QrrUeIwN/DxlDI++1ixPw=="
AdminUserName="weblogicc" CertAlias="wsrpConsumer"
CertPrivateKeyPassword="{3DES}g7h+VOSAsO9pSlvYSSB2iw=="
ConsumerName="wsrpConsumer"
IdentityAssertionProviderClass="com.bea.wsrp.security.
DefaultIdentityAssertionProvider"
Keystore="wsrpKeystore.jks" KeystorePassword=
"{3DES}1OLYVirMWOo+3sEU80cMqw=="
   Name="ConsumerSecurity" /> 

アプリケーションのライフサイクルを通してパスワードのセキュリティを確保するには、EncryptDomainString コマンドライン ユーティリティを使用して暗号パスワードを生成する必要があります。その後、開発環境では、暗号パスワードを application-config.xml ファイルに格納します。その後、必要に応じて、アプリケーションの EAR ファイルをビルドしてデプロイできます。

パスワードの暗号化

パスワードを暗号化するには、次の手順に従います。

  1. コマンド ボックス (DOS シェル) を開き、domain/portal/ (domain はアプリケーションのドメイン ディレクトリ) にナビゲートし、setDomainEnv.cmd を実行します。
  2. プロンプトで次のように入力します。
  3. java com.bea.p13n.util.EncryptDomainString -targetDomainDir d -inputString s 

    各要素の説明は次のとおりです。

    • d は、ポータル アプリケーションのデプロイ先のドメイン ディレクトリ
    • s は、暗号化するために入力するパスワード

    次に例を示します。

    java com.bea.p13n.util.EncryptDomainString -targetDomainDir \bea\weblogic81b\samples\domain\portal -inputString weblogic

    この例では、入力文字列 weblogic は管理者のパスワードを表します (adminpassword=weblogicコード リスト 9-6 を参照)。コマンドライン ユーティリティによって、ドメイン固有の暗号化された文字列が出力されます。

  4. WebLogic Workshop および特定のポータル アプリケーションを開きます。
  5. [ファイル|開く|ファイル] を選択します (図 9-28)。
  6. 図 9-28 WebLogic Workshop でファイルを開く


     

    [開く] ダイアログ ボックスが表示されます。

  7. アプリケーションの META-INF フォルダにナビゲートし、application-config.xml を開きます。

コード リスト 9-7 application-config.xml のクリア テキスト パスワード

<ConsumerSecurity AdminPassword="weblogic" AdminUserName="weblogic"
CertAlias="wsrpConsumer" CertPrivateKeyPassword="wsrppassword"
ConsumerName="wsrpConsumer"
IdentityAssertionProviderClass="com.bea.wsrp.security.
DefaultIdentityAssertionProvider"
Keystore="wsrpKeystore.jks" KeystorePassword="password"
Name="ConsumerSecurity"/>
  1. このクリア テキスト パスワードを、EncryptDomainString ユーティリティで生成されたパスワード (コード リスト 9-7) で置き換えます。以下のような、<ConsumerSecurity>(コード リスト 9-6) 要素の各パスワードについて EncryptDomainString を実行する必要があります。
    • AdminPassword="weblogic"
    • CertPrivateKeyPassword="wsrppassword"
    • KeystorePassword="password"

コード リスト 9-8 EncryptDomainString ユーティリティで生成された暗号パスワード

<ConsumerSecurity AdminPassword="{3DES}3QrrUeIwN/DxlDI++1ixPw=="
AdminUserName="weblogicc" CertAlias="wsrpConsumer"
CertPrivateKeyPassword="{3DES}g7h+VOSAsO9pSlvYSSB2iw=="
ConsumerName="wsrpConsumer"
IdentityAssertionProviderClass="com.bea.wsrp.security.
DefaultIdentityAssertionProvider"
Keystore="wsrpKeystore.jks" KeystorePassword=
"{3DES}1OLYVirMWOo+3sEU80cMqw=="
   Name="ConsumerSecurity" /> 

これで、EAR ファイルを構築しアプリケーションをデプロイできます。

パスワード変更の注意事項

理由にかかわらず、管理者のパスワードを変更する必要がある場合、単にパスワードを変更するだけでは、EAR の再ビルドと再デプロイが必要になります。これには時間がかかり効率が低下します。この問題を回避するために、次の手順に従います。

  1. WSRP 管理者のためにターゲット システムに特殊なユーザを作成します。ユーザの作成の詳細については、「新しいユーザを作成する」を参照してください。
  2. 作成したユーザを管理者グループのメンバーにします。グループへのメンバーの追加については、「グループにユーザを追加する」を参照してください。
  3. パスワードの暗号化」の説明に従い、新しいログオン情報 (ユーザ名とパスワード) をアプリケーションの application-config.xml ファイルに格納します。

 

ナビゲーション バーのスキップ  ページの先頭 前 次