連合ポータル ガイド

     前  次    新しいウィンドウで目次を開く    
ここから内容

SAML による WSRP セキュリティの確立

この章では、それぞれのドメインで実行される WebLogic Portal プロデューサとコンシューマのセキュリティ レルムのコンフィグレーション方法について説明します。章の最初の部分では、プロデューサとコンシューマが共に WebLogic Portal 9.x ドメインで実行されている場合に必要なコンフィグレーションについて説明します。章の次の部分では、ドメインが混在している場合、すなわち、プロデューサとコンシューマが WebLogic Portal 8.1x ドメインまたは 9.x ドメインのいずれかで実行されている場合について説明します。

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

 


WebLogic Portal 9.x ドメイン間の SAML セキュリティ

この節では、プロデューサとコンシューマが、別々の WebLogic Portal 9.x ドメイン間で実行されている場合にカスタム SAML トークンを使って WSRP セキュリティをコンフィグレーションする手順について説明します。この節で説明する手順を使用して、カスタム SAML トークンが必要とされるプロダクション システムのセキュリティをコンフィグレーションします。

注意 : デフォルトでは、以前のコンフィグレーションが存在しない場合、WebLogic Portal 9.x ドメイン間では共通のキーを共有します。そのため、この節で説明するコンフィグレーション手順を経ることなく、デモンストレーションまたはテスト用に、ユーザ認証を必要とする連合ポータルを簡単に作成することができます。
警告 : 前の「注意」で説明したデフォルトのキーをプロダクション環境で使用しないでください。このデフォルト設定を使用すると、どのコンシューマもプロデューサへ接続できるようになります。

この節では、次のトピックについて説明します。

概要

図 15-1 に示すように、一般的なシナリオでは、コンシューマ アプリケーションとプロデューサ アプリケーションは別々の WebLogic Portal 9.x ドメインで実行されます。

図 15-1 基本の使用例

基本の使用例

デフォルトで WebLogic Portal では、WSRP 用のデフォルトのセキュリティ トークン タイプとして SAML が指定されます。デモンストレーション環境または開発環境下では、これ以上、コンフィグレーションを行う必要はありません。しかし、プロダクション環境の場合は、この節で説明する SAML コンフィグレーションを実行することをお勧めします。

SAML コンフィグレーションの設定例

この節では、プロデューサとコンシューマが別々の WebLogic Portal 9.x ドメインで実行されている連合ポータル アプリケーションの例を示します。この例は、これらのドメイン間での SAML セキュリティのコンフィグレーション方法を説明する際のベースとなります。

図 15-2 に示すポータルには、左側にローカル ポートレット、右側にリモート (プロキシ) ポートレットが表示されています。このローカル ポートレットは、ログイン ポートレットです。ユーザのログインが正常に実行されると、プロデューサ ポートレットにユーザの名前が表示されます。ただし、SAML セキュリティのコンフィグレーションが適切でない場合は、ユーザがポータルにログインしたときにエラー結果が表示されます。

図 15-2 ユーザがログインする前のコンシューマ ポータル

ユーザがログインする前のコンシューマ ポータル

図 15-2 から分かるように、ユーザがログインする前にはプロキシ ポートレットにエラーは表示されません。ユーザがログインを試行して初めて、SAML メッセージが送信され、エラーが発生します。

チェックポイント : この節では、プロデューサとコンシューマが別々の WebLogic Portal ドメインで実行されている連合ポータルの例を説明しました。以下の節では、コンシューマから送信される SAML トークンをプロデューサが受け入れるようにコンシューマとプロデューサをコンフィグレーションする方法について説明します。

コンシューマのコンフィグレーション

前の節で示されたエラーを訂正するには、コンシューマとプロデューサの両方のコンフィグレーションが必要とされます。この節では、コンシューマのコンフィグレーションについて説明します。

キーの生成

ヒント : 新たにキーを生成するときは必ず、キーストアをクラスタ全体にコピーする必要があります。

この節では、keytool ユーティリティを使用してコンシューマでキーを生成する方法について説明します。keytool ユーティリティは、Sun Microsystems が配布している Java ユーティリティで、プライベート キーと証明書を管理することができます。keytool の詳細については、Sun Microsystems の Web サイトを参照してください。

注意 : デフォルトで、コンシューマは、サーバがその SSL キーに使用するキーストアを備えています。デフォルトのキーストアの名前は DemoIdentity.jks です。別のキーストアを使用する場合は、使用中のキーストアを変更してください。
  1. コンシューマでコマンド ウィンドウを開き、WEBLOGIC_HOME/server/lib ディレクトリに移動します。
  2. 図 15-3 に示すように、keytool コマンドを実行して、新しいキーを生成します。たとえば、次のコマンドを使用すると、testalias という名前のキーが生成されます。
  3. keytool -genkey -keypass testkeypass -keystore DemoIdentity.jks -storepass DemoIdentityKeyStorePassPhrase -keyalg rsa -alias testalias

    サンプルの keytool コマンドで使用されるオプションは次のとおりです。

    コマンド パラメータ
    説明
    keytool
    キーを生成するための Java ツール。
    -genkey
    keytool にキーの生成を指示する。
    -keypass
    パスワードで新しいキーを使用する。
    -keystore
    キーストアの名前を指定する。キーストアには、キーと証明書が格納される。デフォルトのキーストア DemoIdentity.jks が、パスワードによってプライベート キーを保護するファイルとして実装される。
    -storepass
    キーストアのパスワードを指定する。
    -keyalg
    キーストアの暗号化アルゴリズムを指定する。キーのアルゴリズムには rsa を使用する必要がある。別のアルゴリズムを使用すると、コンシューマが SAML メッセージを送信したときにエラーを受信する。
    -alias
    生成されたキーの名前を指定する。

    図 15-3 キーの生成


    キーの生成

キーのエクスポート

コンシューマ サーバからキーをエクスポートします。図 15-4 に示すように、キーの生成に使用したのと同じコマンド ウィンドウの同じディレクトリで、-export オプションを使用して keytool コマンドを実行します。たとえば、次のコマンドを使用すると、testalias.der という名前のキー ファイルが生成されます。

keytool -export -keypass testkeypass -keystore DemoIdentity.jks -storepass DemoIdentityKeyStorePassPhrase -alias testalias -file testalias.der
図 15-4 証明書のエクスポート

証明書のエクスポート

コンシューマのセキュリティ レルムの変更

この節では、生成したキーを使用するようにコンシューマをコンフィグレーションする手順について説明します。

ヒント : セキュリティ レルムは、ユーザ、グループ、セキュリティ ロール、セキュリティ ポリシー、セキュリティ プロバイダなど、WebLogic リソースの保護のために使用されるメカニズム用のコンテナです。WebLogic Server ドメイン内では複数のセキュリティ レルムを保持できますが、デフォルトの (アクティブな) レルムとして設定できるのは 1 つに限られます。デフォルトのレルム名は myrealm です。
  1. コンシューマで、WebLogic Server Administration Console にログインします。そのためには、ブラウザを開いて、次の URL を入力します。
  2. http://serverIP:port/console

    serverIP は、コンシューマ アプリケーションが動作しているサーバの IP アドレスで、port は、サーバのポート番号です。次に例を示す。

    http://localhost:7001/console

    図 15-5 WebLogic Server Administration Console のログイン ダイアログ


    WebLogic Server Administration Console のログイン ダイアログ

  3. 図 15-6 に示すように、Administration Console の [ドメイン構造] ウィンドウで [セキュリティ レルム] を選択します。
  4. 図 15-6 セキュリティ レルムの選択


    セキュリティ レルムの選択

  5. セキュリティ レルムを選択します。図 15-7 に示すように、デフォルトのセキュリティ レルムの名前は myrealm です。
  6. 図 15-7 セキュリティ レルムの選択


    セキュリティ レルムの選択

  7. 図 15-8 に示すように、[プロバイダ] タブ、[資格マッピング] タブの順に選択します。
  8. 図 15-8 [資格マッピング] タブの選択


    [資格マッピング] タブの選択

  9. 図 15-9 に示すように、SAMLCredentialMapper を選択します。
  10. ヒント : SAML 資格マッパー プロバイダは、SAML セキュリティ アサーションのプロデューサとして機能します。これにより、シングル サインオンでの SAML の使用について WebLogic Server がソース サイトとして機能できるようになります。
    図 15-9 SAMLCredentialMapper の選択


    SAMLCredentialMapper の選択

  11. 図 15-10 に示すように、[プロバイダ固有] を選択します。
  12. 図 15-10 [プロバイダ固有] タブの選択


    [プロバイダ固有] タブの選択

  13. 図 15-11 に示すように、[チェンジ センタ] ウィンドウで、[ロックして編集] を選択します。この機能は、他のユーザが Administration Console で変更を行うのを防ぐと共に、SAMLCredentialMapper 設定の編集を可能にします。
  14. 図 15-11 Administration Console のロック


    Administration Console のロック

  15. 図 15-12 に示すように、[発行者 URI] を編集します。このユニークな URI は、SAML メッセージの発信元をプロデューサに通知し、プロデューサによるコンシューマとキーの照合を可能にします。通常、ユニークであることを保証するために、コンシューマの URL がこの文字列に使用されます。次に例を示す。
  16. http://www.bea.com/demoConsumer

    図 15-12 発行者 URI


    発行者 URI

  17. 図 15-13 に示すように、[署名キー エリアス] および [署名キー パスフレーズ] に入力します。これらは、キーストアを生成したときに使用した値です。この例では以下の値が使用されます。
  18. プロバイダ フィールド
    署名キー エリアス
    testalias
    署名キー パスフレーズ
    testkeypass

    図 15-13 追加のプロバイダ フィールド


    追加のプロバイダ フィールド

    ヒント : [デフォルト生存時間<] を 120 秒に、[資格キャッシュ最小有効生存時間<] を 10 秒に、 [デフォルト生存時間のオフセット] を 0 に設定することを推奨します。次に、[管理] タブを選択して、リライイング パーティのコンフィグレーションで、[アサーション生存時間のオフセット] をコンシューマとプロデューサのクロック時間の差 (コンシューマの時間からプロデューサの時間を引いた時間) に設定します。
  19. [保存] をクリックします。
  20. 図 15-14 に示すように、[チェンジ センタ] ウィンドウで [変更のアクティブ化] をクリックします。
  21. 図 15-14 変更のアクティブ化


    変更のアクティブ化

チェックポイント : この時点で、コンシューマ上の SAML 資格マッパー プロバイダは、生成したキーストアを使用するようにコンフィグレーションされています。ここで、ログイン ポートレットへログインしようとすると、図 15-15 に示すように、エラーを受信します。この理由は、コンシューマから送信された新しいキーをプロデューサが認識しないためです。次の手順では、コンシューマから送信されたキーを受け入れるようにプロデューサをコンフィグレーションします。

図 15-15 プロデューサ ポートレットでのエラーを示すログイン結果

プロデューサ ポートレットでのエラーを示すログイン結果

ヒント : 図 15-16 に示すように、ポータルを右側にスクロールすると、「The SAML token is not valid」というエラー メッセージを確認できます。
図 15-16 エラー メッセージ

エラー メッセージ

プロデューサのコンフィグレーション

この節では、プロデューサのコンフィグレーション方法について説明します。そのためには、SAML アサータに証明書をインポートし、アサーティング パーティのプロパティをコンフィグレーションします。

証明書のインポート

  1. FTP や SMB などの任意の方法を使用して、コンシューマで生成したキー ファイル (testailias.der) をプロデューサにコピーします。このファイルは、対象となるマシンの任意のディレクトリに置くことができます。
  2. プロデューサ マシンで WebLogic Server Administration Console を開き、ログインします。
  3. [セキュリティ レルム] を選択します。
  4. セキュリティ レルムを選択します (たとえば myrealm)。
  5. [プロバイダ] タブを選択します。
  6. [認証] タブを選択します。
  7. 図 15-17 に示すように、SAMLIdentityAsserter を選択します。ID アサータにより、WebLogic Server はユーザを検証することによって信頼を確立することができます。
  8. 図 15-17 ID アサータの選択


    ID アサータの選択

  9. 図 15-18 に示すように、[管理] タブをクリックして、[証明書] をクリックします。
  10. 図 15-18 [証明書] タブの選択


    [証明書] タブの選択

  11. 図 15-19 に示すように、[証明書] ダイアログで [新規作成] をクリックします。
  12. 図 15-19 新しい証明書の作成


    新しい証明書の作成

  13. 図 15-20 に示すように、[エリアス] フィールドに、証明書の名前を入力します。証明書を作成したときに使用したのと同じ名前を使用することをお勧めします。この例では、エリアス名は testalias になります。
  14. 図 15-20 に示すように、[証明書ファイル名] フィールドに、証明書ファイルへのパスを入力します。
  15. 図 15-20 証明書プロパティの入力


    証明書プロパティの入力

  16. [終了] をクリックします。問題が発生していない場合は、次のメッセージが表示されます。
  17. 証明書は正常に登録されました。

アサーティング パーティのプロパティのコンフィグレーション

  1. [管理] タブで、[アサーティング パーティ] をクリックします。
  2. ヒント : プロデューサのデフォルトの WSRP キー用に WsrpDefault アサーティング パーティが設定されています。コンシューマとプロデューサ アプリケーションが同じサーバで実行されている場合は、コンシューマの WSRP キーがプロデューサによって受け入れられます。このため、プロダクション環境にあるアプリケーションについては、WsrpDefault パーティを削除することをお勧めします。
  3. 図 15-21 に示すように、[アサーティング パーティ] テーブルで、[新規作成] をクリックします。
  4. 図 15-21 新しいアサーティング パーティの作成


    新しいアサーティング パーティの作成

  5. 図 15-22 に示すように、[プロファイル] プルダウン メニューで、WSS/Sender Vouches を選択します。
  6. 図 15-22 に示すように、[説明] フィールドに、アサーティング パーティを識別する名前を入力します。たとえば、「demoConsumer」と入力します。
  7. 図 15-22 アサーティング パーティのプロパティ


    アサーティング パーティのプロパティ

  8. 新しいアサーティング パーティを有効化します。そのためには、アサーティング パーティに対応する [パートナ ID] リンクをクリックします。図 15-23 に示すように、この例でのリンクは demoConsumer というアサーション側を示す ap_0002 です。
  9. 図 15-23 新しいアサーティング パーティの選択


    新しいアサーティング パーティの選択

  10. 図 15-24 に示すように、表 15-1 に記載のアサーティング パーティ値を設定します。
  11. 表 15-1 アサーティング パーティ値
    パラメータ
    有効化
    チェック ボックスを選択する (true)。
    対象 URL
    デフォルト
    発行者 URI
    コンシューマでのコンフィグレーションと同じ値を使用する。この例では http://bea.com/demoConsumer
    署名が必要
    チェック ボックスを選択する (true)。
    アサーション署名用証明書エリアス
    コンシューマでのコンフィグレーションと同じ値を使用する。この例では、testalias

    図 15-24 アサーティング パーティ値


    アサーティング パーティ値

  12. [保存] をクリックします。
  13. 問題が発生していない場合は、「設定が正常に更新されました」というメッセージが表示されます。

コンフィグレーションのテスト

  1. コンシューマで、有効なユーザ名およびパスワード (weblogic/weblogic など) を使ってポータル アプリケーションにログインします。プロキシ ポートレットにユーザ名が表示されます。これは、SAML メッセージがコンシューマからプロデューサへと渡され、プロデューサがそのメッセージを認識し、受け入れたことを示しています。
  2. 図 15-25 成功したテスト


    成功したテスト

 


WebLogic Portal 8.1x ドメインと 9.x ドメイン間の SAML セキュリティ

WebLogic Portal 9.x を使用して開発されたプロデューサ アプリケーションとコンシューマ アプリケーションは、WebLogic Portal 8.1x を使用して開発されたプロデューサおよびコンシューマと互換性があります。つまり、WebLogic Portal 9.x を使用して開発したポータルは、WebLogic Portal 8.1x ドメインにデプロイされたポートレットを使用できます。同じように、WebLogic Portal 9.x プロデューサでエクスポーズしたポートレットは、8.1x コンシューマによって使用できます。図 15-26 に、これら 2 つの使用例の概要を示します。

図 15-26 互換性の使用例

互換性の使用例

この節では、これらの両方の使用例について説明します。この章の内容は以下のとおりです。

9.x コンシューマと 8.1x プロデューサ間の SAML セキュリティ

この節では、WebLogic Portal 9.x コンシューマと 8.1x プロデューサ間の SAML ベース セキュリティの互換性を実現する方法について説明します。この概要を図 15-27 に示します。

図 15-27 互換性の使用例

互換性の使用例

ヒント : デフォルトでは、両側でコンフィグレーションの変更がない場合、9.x コンシューマと 8.1x プロデューサ間で WSRP が機能します。つまり、9.x コンシューマは、コンフィグレーションの変更なしで、8.1x プロデューサからのポートレットを使用できます。ただし、9.x コンシューマ用に独自のキーを使用する場合は、この節で概説する手順に従う必要があります。

図 15-28 に示すポータルには、左側にローカル ポートレット、右側にリモート (プロキシ) ポートレットが表示されています。リモート ポートレットは 8.1x プロデューサでデプロイされます。このローカル ポートレットは、ログイン ポートレットです。SAML セキュリティが適切にコンフィグレーションされる前にユーザがログインすると、返される名前は null になります。

図 15-28 ユーザがログインする前のコンシューマ ポータル

ユーザがログインする前のコンシューマ ポータル

コンシューマのコンフィグレーション

以下の節では、プロデューサに送信された SAML アサーションの署名が可能なキーを使ったコンシューマのコンフィグレーション方法について説明します。基本的なタスクは、次のとおりです。

キーの生成

この節では、keytool ユーティリティを使用してコンシューマでキーを生成する方法について説明します。keytool ユーティリティは、Sun Microsystems が配布している Java ユーティリティで、プライベート キーと証明書を管理することができます。keytool の詳細については、Sun Microsystems の Web サイトを参照してください。

  1. コンシューマでコマンド ウィンドウを開き、WEBLOGIC_HOME/server/lib ディレクトリに移動します。
  2. 図 15-29 に示すように、keytool コマンドを実行して、新しいキーを生成します。たとえば、次のコマンドを使用すると、consumer92key という名前のキーが生成されます。
  3. keytool -genkey -alias consumer92key -keystore wsrpKeystore.jks -storepass password -keypass consumer92pass

    サンプルの keytool コマンドで使用されるオプションは次のとおりです。

    コマンド パラメータ
    説明
    keytool
    キーを生成するための Java ツール。
    -genkey
    keytool にキーの生成を指示する。
    -alias
    生成されたキーの名前を指定する。
    -keystore
    キーストアの名前を指定する。キーストアには、キーと証明書が格納される。デフォルトのキーストア wsrpKeystore.jks が、パスワードによってプライベート キーを保護するファイルとして実装される。
    -storepass
    キーストアのパスワードを指定する。
    -keypass
    パスワードで新しいキーを使用する。

    図 15-29 キーの生成


    キーの生成

コンシューマの名前の変更

  1. J2EE 共有ライブラリからプロジェクトへ wsrp-consumer-security-config.xml をコピーします。Workshop for WebLogic でこれを行うには、マージ済みプロジェクト ビューを開き、コンシューマ Web アプリケーションの WEB-INF ディレクトリにあるこのファイルを検索します。ファイルを右クリックし [プロジェクトにコピー] を選択します。J2EE 共有ライブラリからのファイルのコピーの詳細については、『プロダクション業務ガイド』および『ポータル開発ガイド』を参照してください。
  2. コンシューマ Web アプリケーションの WEB-INF ディレクトリにある wsrp-consumer-security-config.xml ファイルを編集します。<consumer-name> 要素を wsrpConsumer から別の任意の名前に変更します。たとえば、次のように変更します。
  3. <consumer-name>wsrpConsumer<consumer-name>

    を、以下のように変更します。

    <consumer-name>consumer9x<consumer-name>

  4. コンフィグレーション ファイルに対する変更が有効になるようにコンシューマ アプリケーションのサーバを再起動します。

チェックポイント : ここで、もう一度、リモート ポートレットにログインしようとすると、図 15-30 に示すように、エラーを受信します。このエラーの原因は、コンシューマから送信されたキーをプロデューサが見つけられないことによります。次は、コンシューマ ドメイン用にセキュリティ レルムをコンフィグレーションします。

図 15-30 ログイン エラー

ログイン エラー

コンシューマのセキュリティ レルムの変更

  1. コンシューマで、WebLogic Server Administration Console にログインします。コンソールの URL は、次のとおりです。
  2. http://servername:portnumber/console

    servername はサーバの IP 名で、portnumber はサーバのポート番号です。次に例を示す。

    http://localhost:7001/console

  3. 図 15-31 に示すように、[ドメイン構造] ウィンドウで [セキュリティ レルム] リンクをクリックします。
  4. 図 15-31 セキュリティ レルムの選択


    セキュリティ レルムの選択

  5. myrealm (または、使用するセキュリティ レルムの名前) を選択してから、[資格マッピング] タブを選択します。
  6. 図 15-32 に示すように、[資格マッピング] タブで [PKI] を選択します。
  7. ヒント : PKI (公開鍵基盤) を使用すると、データを交換する際に、信頼された機関を使用して公開とプライベートの暗号キーの組み合わせを取得し、共有することができます。詳細については、WebLogic Server のドキュメントの「資格マッピング プロバイダのコンフィグレーション」を参照してください。
    図 15-32 PKI の選択


    PKI の選択

  8. [PKI 資格マッピング] テーブルで、[新規作成] をクリックして、新しい資格を作成します。
  9. [新しいセキュリティ資格の作成] ダイアログで、リモート リソース属性情報を何も入力せずに [次へ] をクリックします。
  10. ヒント : リモート リソース属性を空白のままにしておくと、資格がすべてのプロデューサによって受け入れられます。プロデューサを指定する場合は、このダイアログに適切な情報を入力してください。
  11. [新しいセキュリティ資格マップ エントリの作成] ダイアログで、[ローカル ユーザ] フィールドに次の値を入力します。
  12. consumerName__81_COMPAT

    consumerName は、以前に wsrp-consumer-security-config.xml ファイルに入力したコンシューマ名です (この名前の後には 2 つのアンダースコア文字が続きます)。

    この例での [ローカル ユーザ] の正しい値は consumer9x__81_COMPAT になります。

  13. [ユーザ] ラジオ ボタンを選択します。
  14. [キーストア エリアス] フィールドに、以前に生成したキーに使用したエリアスを入力します。この例でのエリアスは consumer92key になります。
  15. [パスワード] フィールドに、キーを生成したときに使用したキーのパスワードを入力します。この例でのパスワードは consumer92pass になります。
  16. [終了] をクリックします。図 15-33 に、PKI 資格マッピングに新たに追加されたプリンシパル名である consumer92__81_COMPAT を示します。
  17. 図 15-33 PKI 資格マッピングのリスト


    PKI 資格マッピングのリスト

  18. コンシューマのキーストアからキーをエクスポートします。keytool ユーティリティを使用して、以前に作成したキーをエクスポートします。次の一連の手順では、このキーを使用して WebLogic Portal 8.1x プロデューサをコンフィグレーションします。次に例を示す。
  19. keytool -export -alias consumer92key -keystore wsrpKeystore.jks -storepass password -keypass consumer92pass -file consumer92.der

チェックポイント : 上記の手順では、SAML アサーションに署名するためのキーにコンシューマ consumer92 を関連付けました。ここで、リモート ポートレットにログインしようとした場合、前に表示されたエラーは表示されません。つまり、コンシューマは、現在、キーに適切に関連付けられています。ただし、この時点では、ログイン後、図 15-34 に示すように、usernamenull になります。これは、このコンシューマがプロデューサでまだ認識されていないためです。次の一連の手順は、WebLogic Portal 9.x コンシューマのキーを受け入れるように WebLogic Portal 8.1x プロデューサをコンフィグレーションする方法を示しています。

ヒント : WebLogic Portal 9.x プロデューサと WebLogic Portal 8.1x プロデューサの動作には重要な違いがあります。WebLogic Portal 9.x プロデューサが、コンシューマが送信しているメッセージを確認できない場合は、エラーを受信しますが、WebLogic Portal 8.1x プロデューサが、コンシューマが送信しているメッセージを確認できない場合、プロデューサはこの状況を無視し、匿名ユーザを使って処理を続行します。さらに、8.1x コンシューマが 9.x プロデューサに検証不可能なメッセージを送信した場合は、同様にプロデューサはこの状態を無視し、匿名ユーザを使って処理を続行します。
図 15-34 Username (ユーザ名) = Null

Username (ユーザ名) = Null

WebLogic Portal 8.1x プロデューサのコンフィグレーション

この節では、WebLogic Portal 8.1x プロデューサのコンフィグレーション方法について説明します。そのためには、キーをプロデューサのキーストアへインポートします。

証明書のインポート
  1. FTP や SMB など、システムに合った方式を使用して、以前にエクスポートした証明書を、プロデューサ アプリケーションがデプロイされたシステムへコピーします。このファイルは、対象となるマシンの任意の場所に置くことができます。
  2. コマンド ウィンドウで、プロデューサのドメインのルート ディレクトリへ移動します。次に例を示す。
  3. BEA_HOME/weblogic81/user_projects/domains/portalDomain

  4. keytool ユーティリティを使ってキーをインポートします。次に例を示す。
  5. keytool -import -keystore wsrpKeystore.jks -file c:\consumer92.der -storepass password -alias consumer9x -keypass consumer92pass

    注意 : alias 引数は、コンシューマでキーを作成したときに使用したコンシューマ名に一致していなければなりません。この例での名前は、consumer9x になります。
  6. プロデューサ アプリケーションがデプロイされたサーバを再起動します。
コンフィグレーションのテスト

プロデューサ サーバの再起動後は、コンシューマ アプリケーションでもう一度、リモート ポートレットをテストすることができます。図 15-35 に示すように、ポータルにログインすると、今回はリモート ポートレットが、ユーザがログインしたと認識していることがわかります。

図 15-35 成功したコンフィグレーション

成功したコンフィグレーション

まとめ

上記の例は、WebLogic Portal 9.x コンシューマと WebLogic Portal 8.1x プロデューサ間の SAML セキュリティのコンフィグレーション方法を示したものです。次の例では、反対に WebLogic Portal 8.1x コンシューマと WebLogic Portal 9.x プロデューサ間の SAML セキュリティのコンフィグレーションを示します。

8.1x コンシューマと 9.x プロデューサ間の SAML セキュリティ

この節では、WebLogic Portal 8.1x コンシューマと 9.x プロデューサ間のセキュリティの互換性を実現する方法について説明します。この概要を図 15-36 に示します。

図 15-36 互換性の使用例

互換性の使用例

基本的な手順は、次のとおりです。

8.1x コンシューマのコンフィグレーション

この節では、8.1x プロデューサのコンフィグレーション方法について説明します。基本的な手順には、キーの生成と WebLogic Administration Portal での WSRP コンシューマ セキュリティ サービスのコンフィグレーションが含まれます。

キーの生成

この節では、keytool ユーティリティを使って、コンシューマでキーを生成する方法について説明します。Sun Microsystems が配布している Java ユーティリティである keytool は、プライベート キーと証明書を管理することができます。keytool の詳細については、Sun Microsystems の Web サイトを参照してください。

  1. キーを生成していない場合は、生成します。そのためには、WebLogic Portal 8.1x コンシューマ アプリケーションのドメインのルート ディレクトリに移動し、keytool ユーティリティを使ってキーを生成します。次に例を示す。
  2. BEA_HOME/weblogic81/user_projects/domains/portal

    keytool -genkey -keystore wsrpKeystore.jks -alias consumer8xkey -storepass password -keypass consumer8xpass

    サンプルの keytool コマンドで使用されるオプションは次のとおりです。

    コマンド パラメータ
    説明
    keytool
    キーを生成するための Java ツール。
    -genkey
    keytool にキーの生成を指示する。
    -keystore
    キーストアの名前を指定する。キーストアには、キーと証明書が格納される。デフォルトのキーストア wsrpKeystore.jks が、パスワードによってプライベート キーを保護するファイルとして実装される。
    -alias
    生成されたキーの名前を指定する。
    -storepass
    キーストアのパスワードを指定する。
    -keypass
    パスワードで新しいキーを使用する。

  3. コンシューマ アプリケーションのサーバのバージョン 8.1x WebLogic Administration Portal にログインします。Workshop for WebLogic から Administration Portal を起動するには、[Portal|Portal Administration] を選択します。または、ブラウザに次の URL を入力します。
  4. http://localhost:7001/applicationName/login.jsp

    applicationName は WebLogic Portal コンシューマ アプリケーションの名前です。

    図 15-37 WebLogic Administration Portal の [サインイン] ページ


    WebLogic Administration Portal の [サインイン] ページ

  5. Administration Portal で [サービス管理] を選択します。
  6. 図 15-38 に示すように、[アプリケーション コンフィグレーション設定] ツリーで、[WSRP コンシューマ セキュリティ サービス] を選択します。
  7. 図 15-38 WSRP コンシューマ セキュリティ サービスの選択


    WSRP コンシューマ セキュリティ サービスの選択

  8. 図 15-39 に示すように、コンフィグレーション設定ダイアログで、コンシューマの名前、コンシューマのキーを生成したときに使用した証明書エリアス、キーを生成したときに使用した証明書プライベート キーのパスワードを入力し、[更新] をクリックします。
  9. 図 15-39 セキュリティ サービス パラメータの入力


    セキュリティ サービス パラメータの入力

  10. keytool ユーティリティを使ってキーをエクスポートします。そのためには、コンシューマのドメインのルート ディレクトリに移動して、該当する keytool コマンドを入力します。次に例を示す。
  11. keytool -export -alias consumer8xkey -keystore wsrpKeystore.jks -file consumer81.der

9.x プロデューサのコンフィグレーション

この節では、プロデューサのコンフィグレーション方法について説明します。そのためには、コンシューマの証明書を含むようにプロデューサの PKI 資格マッピングをコンフィグレーションする必要があります。

  1. FTP や SMB など、適切な方式を使用して、エクスポートしたキーを、WebLogic Portal 9.x プロデューサのルート ドメイン ディレクトリへコピーします。このファイルは、対象となるマシンの任意の場所に置くことができます。
  2. keytool ユーティリティを使って、キーを 9.x プロデューサのキーストアへインポートします。次に例を示す。
  3. keytool -import -keystore wsrpKeystore.jks -file consumer81.der -alias consumer8xkey -keypass consumer8xpass

  4. プロデューサ サーバで、WebLogic Server Administration Console にログインします。
  5. 図 15-31 に示すように、[ドメイン構造] ウィンドウで [セキュリティ レルム] リンクをクリックします。
  6. 図 15-40 セキュリティ レルムの選択


    セキュリティ レルムの選択

  7. myrealm (または、使用するセキュリティ レルムの名前) を選択してから、[資格マッピング] タブを選択します。
  8. 図 15-32 に示すように、[資格マッピング] タブで [PKI] を選択します。
  9. ヒント : PKI (公開鍵基盤) を使用すると、データを交換する際に、信頼された機関を使用して公開とプライベートの暗号キーの組み合わせを取得し、共有することができます。詳細については、WebLogic Server のドキュメントの「資格マッピング プロバイダのコンフィグレーション」を参照してください。
    図 15-41 PKI の選択


    PKI の選択

  10. 図 15-42 に示すように、[PKI 資格マッピング] ダイアログで [新規作成] をクリックします。
  11. 図 15-42 新しい PKI 資格マッピングの作成


    新しい PKI 資格マッピングの作成

  12. [セキュリティ資格マッピングのリモート リソースの作成] ダイアログで、すべてのフィールドを空白にしたまま [次へ] をクリックします。
  13. ヒント : フィールドを空白のままにしておくと、すべてのコンシューマに対して資格が認識されます。資格を特定のコンシューマに限定する場合は、必要な情報を入力できます。
  14. [新しいセキュリティ資格マップ エントリの作成] ダイアログで、次の情報を入力します。
    • [証明書] ラジオ ボタンを選択する (true)。
    • [プリンシパル名] フィールドに「consumerName__81_COMPAT」と入力する。consumerName はコンシューマの名前です。この例での名前は、consumer8x です。
    • [ユーザ] ラジオ ボタンを選択します。
    • [キーストア エリアス] フィールドに、キーストアをインポートしたときに使用したエリアスを入力する。この例では、consumer8xkey です。
    • [パスワード] フィールドに、キーストアをインポートしたときに使用したキーのパスワードを入力する。この例では、consumer81pass です。
    • 図 15-43 はダイアログの入力を示しています。

      図 15-43 PKI 資格マッピング パラメータの入力


      PKI 資格マッピング パラメータの入力

  15. [終了] をクリックします。図 15-44 に示すように、[PKI 資格マッピング] テーブルが再び表示され、新しい証明書が追加されたことが示されます。
  16. 図 15-44 プロデューサに追加された新しい証明書


    プロデューサに追加された新しい証明書

コンフィグレーションのテスト

コンフィグレーションをテストするには、コンシューマ ポータルにログインします。図 15-45 に示すように、ユーザ名 weblogic がプロキシ ポートレットに表示されます。これは、ユーザがプロデューサへのログインに成功したことを示しています。

図 15-45 成功したテスト

成功したテスト

 


名前マッパーによる SAML セキュリティの使用

名前マッパーは、ユーザ名を別のユーザ名にマッピングするクラスです。名前マッパーは、プロデューサとコンシューマで同一のユーザに対して異なる名前が設定されている場合に使用します。この節では、コンシューマとプロデューサの両方における名前マッパー クラスの記述およびコンフィグレーション方法について説明します。

プロデューサまたはコンシューマで名前マッピング クラスを使用する場合の基本的な手順は次のとおりです。

名前マッパー クラスの記述

WebLogic Portal は、2 つのユーザ名マッピング インタフェースを備えています。

コンシューマでの SAMLCredentialNameMapper の実装

コンシューマで SAMLCredentialNameMapper を実装して、コンシューマでの名前マッピングを提供します。コード リスト 15-1 は、SAMLCredentialNameMapper の実装例を示しています。

mapSubject() メソッドはサブジェクト (ユーザ) を取得して、SAMLNameMapperInfo オブジェクトを返します。このメソッドは、ユーザ名をテストして、そのユーザ名を新しいユーザ名に置き換えるためのロジックを提供します。次に、このユーザ名が SAMLNameMapperInfo オブジェクトによって返され、その後、プロデューサに渡されます。

このインタフェースの詳細については、「Javadoc」を参照してください。

コード リスト 15-1 SAMLCredentialNameMapper の実装例
package com.bea.wsrp.qa.security;

import java.util.Collection;
import java.util.Set;
import javax.security.auth.Subject;

import weblogic.security.SubjectUtils;
import weblogic.security.providers.saml.SAMLCredentialNameMapper;
import weblogic.security.providers.saml.SAMLNameMapperInfo;
import weblogic.security.service.ContextHandler;
import weblogic.security.spi.WLSGroup;

public class CustomSAMLNameMapperImpl implements SAMLCredentialNameMapper {

private String nameQualifier = null;

public CustomSAMLNameMapperImpl (){ }

/************ SAMLCredentialNameMapper 実装**************/

public synchronized void setNameQualifier(String nameQualifier)
{
this.nameQualifier = nameQualifier;
}

public SAMLNameMapperInfo mapName (String name, ContextHandler handler)
{
return new SAMLNameMapperInfo(nameQualifier, name, null);
}

public SAMLNameMapperInfo mapSubject (Subject subject, ContextHandler handler)
{
// プロバイダは null サブジェクトをチェックします。
Set groups = subject.getPrincipals(WLSGroup.class);
String userName = null;

userName = SubjectUtils.getUsername(subject);
if (userName == null || userName.equals("")) {
System.out.println("mapSubject: Username string is null or
                      empty, returning null");
return null;
}

if (userName.equals("testUser"))
{
userName = "testUser_Mapped";
}

// マッピング情報を返します。
return new SAMLNameMapperInfo(nameQualifier, userName, groups);
}
}

プロデューサでの SAMLIdentityAssertionNameMapper の実装

プロデューサで SAMLIdentityAssertionNameMapper を実装して、名前マッピングを提供します。コード リスト 15-2 は、SAMLIdentityAssertionNameMapper の実装例を示しています。この例では、ユーザがコンシューマに testUser_Mapped としてログインします。この場合、名前マッパー クラスがプロデューサでそのユーザ名を取得し、ユーザは testUser_Producer としてログインします。

mapNameInfo() メソッドは、コンシューマから SAMLNameMapperInfo オブジェクトを取得します。このオブジェクトには、ユーザがコンシューマでのログインに使った名前が含まれます。このメソッドは、コンシューマから取得したユーザ名をテストして、そのユーザ名をプロデューサ上のユーザ名に置き換えるためのロジックを提供します。

このインタフェースの詳細については、「Javadoc」を参照してください。

コード リスト 15-2 SAMLIdentityAssertionNameMapper の実装例
package com.bea.wsrp.qa.security;
import java.util.Collection;
import java.util.Set;
import javax.security.auth.Subject;

import weblogic.security.SubjectUtils;
import weblogic.security.providers.saml.SAMLIdentityAssertionNameMapper;
import weblogic.security.providers.saml.SAMLNameMapperInfo;
import weblogic.security.service.ContextHandler;
import weblogic.security.spi.WLSGroup;

public class CustomSAMLNameMapperImpl implements SAMLIdentityAssertionNameMapper
{
private String nameQualifier = null;

public CustomSAMLNameMapperImpl (){ }


/************ SAMLIdentityAssertionNameMapper 実装**************/

public String getGroupAttrName ()
{
return SAMLNameMapperInfo.BEA_GROUP_ATTR_NAME;
}

public String getGroupAttrNamespace ()
{
return SAMLNameMapperInfo.BEA_GROUP_ATTR_NAMESPACE;
}

public Collection mapGroupInfo(SAMLNameMapperInfo info, ContextHandler handlr)
{
return info.getGroups();
}

public String mapNameInfo(SAMLNameMapperInfo info, ContextHandler handler)
{
String userName = info.getName();

if (userName == null || userName.equals("")) {
System.out.println("mapNameInfo: Username string is null or
                       empty, returning null");
return null;
}

if (userName.equals("testUser_Mapped"))
{
userName = "testUser_Producer";
}

return userName;
}
}

マッパー クラスのデプロイ

マッパー クラスをプロデューサで実装するか、コンシューマで実装するかにかかわらず、マッパー クラスはサーバのクラスパスに含まれていなければなりません。サーバのクラスパスにクラスを追加する方法については、WebLogic Server トピックの「クラスパスへの起動クラスおよび停止クラスの追加」に関する説明を参照してください。

マッパー クラスのコンフィグレーション

マッパー クラスをプロデューサやコンシューマのセキュリティ レルムに追加するには、WebLogic Server Administration Console を使用する必要があります。

プロデューサへのマッパー クラスの追加

プロデューサにマッパー クラスを追加するには、以下の操作を行います。

  1. プロデューサ マシンで WebLogic Server Administration Console を開き、ログインします。
  2. ドメイン構造ツリーで、[セキュリティ レルム] を選択します。
  3. セキュリティ レルムを選択します (たとえば myrealm)。
  4. [プロバイダ] を選択します。
  5. 図 15-17 に示すように、SAMLIdentityAsserter を選択します。ID アサータにより、WebLogic Server はユーザを検証することによって信頼を確立することができます。
  6. 図 15-46 ID アサータの選択


    ID アサータの選択

  7. [管理] タブをクリックします。
  8. [アサーティング パーティ] テーブルで、使用するアサーティング パーティに対応する [パートナ ID] リンクをクリックします。図 15-23 に示すように、この例でのリンクは demoConsumer というアサーション側を示す ap_0002 です。
  9. 図 15-47 新しいアサーティング パーティの選択


    新しいアサーティング パーティの選択

  10. 図 15-48 に示すように、[コンフィグレーション] タブで、[名前マッパー クラス] フィールドにマッパー クラスの完全なクラス名を入力します。次に例を示す。
  11. com.bea.wsrp.qa.security.CustomSAMLNameMapperImpl

    図 15-48 名前マッパー クラスの入力


    名前マッパー クラスの入力

  12. [保存] をクリックします。

コンシューマへのマッパー クラスの追加

プロデューサにマッパー クラスを追加するには、以下の操作を行います。

  1. コンシューマ マシンで WebLogic Server Administration Console を開き、ログインします。
  2. ドメイン構造ツリーで、[セキュリティ レルム] を選択します。
  3. セキュリティ レルムを選択します (たとえば myrealm)。
  4. [プロバイダ] タブを選択します。
  5. 図 15-49 [資格マッピング] タブの選択


    [資格マッピング] タブの選択

  6. 図 15-50 に示すように、SAMLCredentialMapper を選択します。
  7. 図 15-50 SAMLCredentialMapper の選択


    SAMLCredentialMapper の選択

  8. [管理] タブを選択します。
  9. 使用するリライイング パーティに対応する [リライイング パーティ] リンクを選択します。たとえば、図 15-51 に示すリライイング パーティは rp_00001 です。
  10. ヒント : リライイング パーティのコンフィグレーションの詳細については、WebLogic Server トピックの「リライイング パーティのコンフィグレーション」に関する説明を参照してください。
    図 15-51 リライイング パーティの選択


    リライイング パーティの選択

  11. 図 15-52 に示すように、[名前マッパー クラス] フィールドにマッパー クラスの完全なクラス名を入力します。次に例を示す。
  12. com.bea.wsrp.qa.security.CustomSAMLNameMapperImpl

    図 15-52 名前マッパー クラスの入力


    名前マッパー クラスの入力

  13. [保存] をクリックします。

 


仮想ユーザの許可

コンシューマから送信されたユーザ名をプロデューサが認識しない場合、自動的に新規ユーザを作成するようにプロデューサをコンフィグレーションできます。この機能は、コンシューマ アプリケーションからログインする可能性があるすべてのユーザに対して、プロデューサでユニークなユーザ名を手動で作成しないようにする場合に便利です。この機能は、前述のとおり、コンシューマの SAML トークンを認識するようにプロデューサがコンフィグレーションされている場合に限り使用することができます。

仮想ユーザを許可するようにプロデューサをコンフィグレーションするには、次の手順を実行します。

  1. WebLogic Server Administration Console にログインします。
  2. SAMLIdentityAsserter の [コンフィグレーション] タブに移動します。このタブへの移動手順については、「プロデューサへのマッパー クラスの追加」を参照してください。
  3. [仮想ユーザを許可] チェックボックスチェックします。
  4. [保存] をクリックします。
  5. 図 15-53 [すべての仮想ユーザ]


    [すべての仮想ユーザ]


  ページの先頭       前  次