OpenID 認証の構成

ID プロバイダーには、Google、Yahoo、Facebook など (これに限定されません) のサイトがあります。アドミニストレーターとして、これらの ID プロバイダーと連携するための認証の構成方法を選択できます。

始める前に

システム時刻を現地時間に合わせます。

このタスクについて

ユーザーは、いつでも WebSphere® Portal 資格情報を登録したり、それを使用してログインしたりできます。 enable-identityprovider-tai タスクを使用して、以下の構成のいずれかを選択できます。
要確認: Google と Yahoo は、OpenID 仕様を使用する有名な ID プロバイダーです。 Facebook では OAuth が使用されています。
制限: YAHOO を ID プロバイダーとする OpenID 認証を使用するようにポータルを構成する場合は、属性交換が機能しません。この制限は、YAHOO の OpenID アカウントのユーザー属性が、ご使用のポータルのユーザー・アカウントに転送されないことを意味します。
  • Facebook 専用の構成。Facebook 用に指定されているパラメーターを使用します。
  • OpenID 専用の構成。OpenID 用に指定されているパラメーターを使用します。
  • Facebook と OpenID の構成。Facebook と OpenID 用に指定されているパラメーターを使用します。

手順

  1. Facebook を構成する予定の場合は、WebSphere Portal サーバー・インスタンスを Facebook アプリケーションとして登録します。 2 つのアプリケーションを登録する必要があります。 1 つのアプリケーションは保護されたパス /wps/myportal です。 もう 1 つのアプリケーションは、公開された、保護されていないパス /wps/portal です。

    登録後、Facebook からアプリケーション ID とアプリケーション機密事項が提供されます。この情報は、enable-identityprovider-tai タスクの実行時に使用します。

    ヒント: ご使用の Facebook アプリケーションには、私用 URL と公開 URL があります。 私用 URL は、http://yourserver:yourport/wps/myportal/ です。 公開 URL は、http://yourserver:yourport/wps/portal/ です。
  2. 必須: wp_profile_root¥ConfigEngine ディレクトリーから、適切なパラメーターを指定して以下のタスクを実行します。
    クラスターに関する注意事項: このステップは、1 次ノードでのみ実行します。
    注意:
    enable-identityprovider-tai タスクを再実行すると、タスクにより新しいプロパティーが設定され、古い構成データは保持されません。既存のデータを保持する場合は、タスクを再実行する前に、新しい値を既存の値に追加します。
    • AIX®: ./ConfigEngine.sh enable-identityprovider-tai -DWasUserId=username -DWasPassword=password
    • HP-UX: ./ConfigEngine.sh enable-identityprovider-tai -DWasUserId=username -DWasPassword=password
    • IBM® i:ConfigEngine.sh enable-identityprovider-tai -DWasUserId=username -DWasPassword=password
    • Linux: ./ConfigEngine.sh enable-identityprovider-tai -DWasUserId=username -DWasPassword=password
    • Solaris: ./ConfigEngine.sh enable-identityprovider-tai -DWasUserId=username -DWasPassword=password
    • Windows:ConfigEngine.bat enable-identityprovider-tai -DWasUserId=username -DWasPassword=password
    ビジネス要件に対応するためにタスクをカスタマイズするには、以下のパラメーターを追加します。
    -Didp.providerlist
    両方のオプションを構成する場合は、値を facebook,openid に設定します。 Facebook のみを構成する場合は、値を facebook に設定します。 OpenID 仕様を使用する ID プロバイダーのみを構成する場合は、値を openid に設定します。 このフィールドをブランクのままにしておくと、デフォルト値は facebook になります。
    -Dfacebook_apps
    Facebook を構成している場合は、Facebook を使用して認証 (app)、自己登録 (pub)、またはその両方 (app,pub) を行うことができます。 デフォルト値は app です。 この値は、以下のいずれかの値に設定します。
    app
    認証の構成のみ。
    pub
    自己登録の構成のみ。
    app,pub
    認証と自己登録の構成の両方。
    -Dfacebook_app_id
    認証用に Facebook を構成している場合は、値を yourprivatefacebookappid に設定します。 この値は、Portal Server を私用 Facebook アプリケーションとして登録した際に受け取ったものです。 これは私用 URL 用の値です。
    -Dfacebook_app_secret
    認証用に Facebook を構成している場合は、値を yourprivatefacebookappsecret に設定します。 この値は、Portal Server を私用 Facebook アプリケーションとして登録した際に受け取ったものです。 これは私用 URL 用の値です。
    -Dfacebook_app_site
    認証用に Facebook を構成している場合は、値を http://yourserver:yourport/wps/myportal/に設定します。 これは、認証が成功した後に Facebook が使用する私用 WebSphere Portal サーバー用の値です。 保護された領域にアクセスするには認証が必要であり、匿名ユーザーは利用できません。
    -Dfacebook_pub_id
    自己登録用に Facebook を構成している場合は、値を yourpublicfacebookappid に設定します。 この値は、Portal Server を Facebook アプリケーションとして登録した際に受け取ったものです。 これは公開 URL 用の値です。
    -Dfacebook_pub_secret
    自己登録用に Facebook を構成している場合は、値を yourpublicfacebookappsecret に設定します。 この値は、Portal Server を Facebook アプリケーションとして登録した際に受け取ったものです。 これは公開 URL 用の値です。
    -Dfacebook_pub_site
    自己登録用に Facebook を構成している場合は、値を http://yourserver:yourport/wps/portal/に設定します。 これは、認証が成功した後に Facebook が使用する公開 WebSphere Portal サーバー用の値です。 公開された領域は、そこへアクセスするには認証は必要なく、匿名ユーザーも利用できます。
    -Dopenid.servicenames
    OpenID 仕様を使用する ID プロバイダーを構成する場合は、構成する ID プロバイダーのコンマ区切りのリストを入力します。例えば、Google,Yahoo のように入力します。
    -Dopenid.servicenames.endpoints
    OpenID 仕様を使用する ID プロバイダーを構成する場合は、OpenID エンドポイント (アクセス・アドレス) のコンマ区切りのリストを入力します。 これらのエンドポイントは、openid.servicenames パラメーターにある ID プロバイダー用のものです。例えば、https://www.google.com/accounts/o8/id,https://me.yahoo.com/ のように入力します。openid.servicenames パラメーターと openid.servicenames.endpoints パラメーターは、1 対 1 で対応させる必要があります。openid.servicenames パラメーターに 3 つの ID プロバイダーを入力した場合は、openid.servicenames.endpoints パラメーターに 3 つのエンドポイントを、同じ順序で入力する必要があります。
    -Dprovider.openid.nonce_valid_time
    OpenID 仕様を使用する ID プロバイダーを構成する場合は、古い通信がリプレイ・アタックで再使用されるのを防ぐように、値を秒単位で入力します。 このパラメーターを設定しないと、SystemOut.log ファイルに nonce エラーが記録される可能性があります。
  3. 必須: 以下のステップを実行して、「プロファイル管理」ポートレットと「ログイン」ポートレットを構成します。
    クラスターに関する注意事項: クラスター内の 1 つのノードで、以下のステップを実行します。
    1. アドミニストレーターとしてWebSphere Portal にログオンします。
    2. 「管理メニュー」アイコンをクリックします。次に、「ポートレットの管理」 > 「ポートレット」をクリックします。
    3. 「ログイン」ポートレットを見つけて、「ポートレットの構成」アイコンをクリックします。
    4. 以下のパラメーターを使用して「ログイン」ポートレットを構成します。
      ヒント: 認証中に、WebSphere Portal サーバーは ID プロバイダーから属性を取得します。 言語設定などのカスタム・パラメーターは自動的には取得されません。 そのようなパラメーターは、ポータルに追加する必要があります。 パラメーターが存在しない場合、パラメーター名を「新規設定」に、パラメーター値を「新しい値」に入力します。次に、「追加」をクリックして新規パラメーターを「ログイン」ポートレットに追加します。
      show_idp_option
      ポートレットに ID プロバイダー認証フィーチャーを表示するには、この必須パラメーターを true に設定します。
      show_idp_max
      この必須パラメーターを、ポートレットに表示される ID プロバイダーの最大数に設定します。 enable-identityprovider-tai タスクを実行する場合は、プロバイダーのリストを定義します。 5 つの ID プロバイダーが定義してあり、そのうちの 2 つをポートレットで表示する場合は、このパラメーターを 2 に設定します。 ポートレット上では、2 つの ID プロバイダーが表示されます。 「詳細」をクリックすると、ID プロバイダーの完全なリストが表示されます。
      show_idp_freeform_field
      完全な OpenID のストリングを使用して、それを特定の既知のサービスに制限しない場合は、この必須パラメーターを true に設定します。 このオプションは、ポートレット上にフリー・フォーム・フィールドを表示します。 これを設定すると、ユーザーは任意の OpenID ID を入力できます。
      providername.image
      providername は、大/小文字の区別のある ID プロバイダー名を表します。 例えば、Google.image パラメーターを作成します。 このオプション・パラメーターは、構成済みの ID プロバイダーのボタンのイメージを定義する場合に設定します。 テキスト・ボタンまたはイメージのどちらを表示するのかを定義できます。 ID プロバイダーのイメージの URL を入力します。
    5. 「OK」をクリックして変更を保存します。
    6. 「プロファイル管理」ポートレットを見つけて、「ポートレットの構成」アイコンをクリックします。
    7. 以下のパラメーターを使用して「プロファイル管理」ポートレットを構成します。
      ヒント: パラメーターが存在しない場合、パラメーター名を「新規設定」フィールドに、パラメーター値を「新しい値」フィールドに入力します。 次に、「追加」をクリックして新規パラメーターを「プロファイル管理」ポートレットに追加します。
      show_idp_option
      ポートレットに ID プロバイダー認証フィーチャーを表示するには、この必須パラメーターを true に設定します。
      show_idp_max
      この必須パラメーターを、ポートレットに表示される ID プロバイダーの最大数に設定します。 enable-identityprovider-tai タスクを実行する場合は、プロバイダーのリストを定義します。 5 つの ID プロバイダーが定義してあり、そのうちの 2 つをポートレットで表示する場合は、このパラメーターを 2 に設定します。 ポートレット上では、2 つの ID プロバイダーが表示されます。 「詳細」をクリックすると、ID プロバイダーの完全なリストが表示されます。
      show_idp_freeform_field
      完全な OpenID のストリングを使用して、それを特定の既知のサービスに制限しない場合は、この必須パラメーターを true に設定します。 このオプションは、ポートレット上にフリー・フォーム・フィールドを表示します。 これを設定すると、ユーザーは任意の OpenID ID を入力できます。
      providername.image
      providername は、大/小文字の区別のある ID プロバイダー名を表します。 例えば、Google.image パラメーターを作成します。 このオプション・パラメーターは、構成済みの ID プロバイダーのボタンのイメージを定義する場合に設定します。 テキスト・ボタンまたはイメージのどちらを表示するのかを定義できます。 ID プロバイダーのイメージの URL を入力します。
      providername.required
      providername は、大/小文字の区別のある ID プロバイダー・サービス名を表します。 例えば、Google.required パラメーターを作成します。このオプション・パラメーターは、ID プロバイダーと「プロファイル管理」ポートレットとの間で必須とする属性マッピングを定義する場合に設定します。 垂直バー (|) で結合されている属性マッピング・ペアのセミコロン区切りのリストを入力します。 例えば、attributename|openidattribute のようになります。 サポート対象の各 ID プロバイダーについて、パラメーターを作成する必要があります。例えば、Google.requiredaol.required などです。サポートされる属性については、各 ID プロバイダーのスキーマに関する資料を参照してください。マッピングの例には、以下のようなものが含まれます。
      Google: すべて 1 行で

      ibm-primaryEmail|http://axschema.org/contact/email;

      preferredLanguage|http://axschema.org/pref/language;

      givenName|http://axschema.org/namePerson/first;

      sn|http://axschema.org/namePerson/last

      Facebook: すべて 1 行で

      ibm-primaryEmail|email;

      givenName|first_name;

      sn|last_name;

      uid|id;

      preferredLanguage|locale

      providername.optional
      providername は、大/小文字の区別のある ID プロバイダー名を表します。 例えば、Google.optional パラメーターを作成します。このパラメーターは、ID プロバイダーと「プロファイル管理」ポートレットとの間でオプションとする属性マッピングを定義する場合に設定します。 垂直バー (|) で結合されている属性マッピング・ペアのセミコロン区切りのリストを入力します。 サポート対象の各 ID プロバイダーについて、パラメーターを作成できます。例えば、Google.optionalaol.optional などです。サポートされる属性については、各 ID プロバイダーのスキーマに関する資料を参照してください。マッピングの例には、以下のようなものが含まれます。
      Google: すべて 1 行で

      ibm-primaryEmail|http://axschema.org/contact/email;

      preferredLanguage|http://axschema.org/pref/language;

      givenName|http://axschema.org/namePerson/first;

      sn|http://axschema.org/namePerson/last

      Facebook: すべて 1 行で

      ibm-primaryEmail|email;

      givenName|first_name;

      sn|last_name;

      uid|id;

      preferredLanguage|locale

      providername.protocol
      providername は、大/小文字の区別のある ID プロバイダー名を表します。 この必須パラメーターは、ID プロバイダーの Attribute Exchange プロトコルを定義するために設定します。 Simple Registration (SREG) と Attribute Exchange (AX) がサポートされています。 このパラメーターでサポートされる値は、openid.sreg (SREG の場合) または openid.ax (AX の場合) です。 サポート対象の各 ID プロバイダー・サービス名について、パラメーターを作成する必要があります。例えば、Google.protocolaol.protocol などです。
      facebook.required
      このパラメーターは、Facebook と「プロファイル管理」ポートレットとの間の必須属性マッピングを定義するために設定します。垂直バー (|) で結合されている属性マッピング・ペアのセミコロン区切りのリストを入力します。
      一部のマッピング例には以下が含まれています (すべて 1 行で)。
      • attributename|facebookattribute;
      • attribute2|facebookattribute2
      以下の項目はマッピングの例です (すべて 1 行で)。
      • uid|id;ibm-primaryEmail|email;
      • givenName|first_name;sn|last_name;
      • preferredLanguage|locale
    8. 「OK」をクリックして変更を保存します。
  4. 以下の .jar ファイルが AppServer_root¥lib¥ext ディレクトリーにコピーされていることを確認してください。
    クラスターに関する注意事項: クラスター内の各ノードで、以下のステップを実行します。
    • PortalServer_root¥prereqs.infra¥prereq.commons.httpclient¥lib¥ext¥commons-codec-1.6.jar
    • PortalServer_root¥prereqs.infra¥prereq.commons.httpclient¥lib¥ext¥commons-httpclient-3.0.1.jar
  5. 必須: 以下のステップを実行して、構成済み ID プロバイダーの SSL 証明書を追加します。 一部のプロバイダーには複数の証明書が必要です。
    重要: ID プロバイダーが、異なる SSL 証明書を必要とする複数のサーバー・エンドポイントを使用する場合、エラー・メッセージ EJPAK0062E を受け取る可能性があります。
    クラスターに関する注意事項: クラスター環境では、デプロイメント・マネージャーにおいてのみ、以下のステップを実行する必要があります。
    ファームに関する注記: ファーム環境では、ファーム内の各サーバーにおいて、以下のステップを実行する必要があります。
    1. WebSphere Integrated Solutions Consoleにログオンします。
    2. 「セキュリティー」 > 「SSL 証明書および鍵管理」に移動します。
    3. 「構成設定」で、「エンドポイント・セキュリティー構成の管理」をクリックします。
    4. 「アウトバウンド」 > 「ホスト名」 > 「ノード」 > node_name > 「サーバー」で、WebSphere_Portal サーバー・オプションをクリックします。
    5. 「関連項目」で、「鍵ストアおよび証明書」をクリックします。
    6. 「NodeDefaultTrustStore」 をクリックします。
      クラスターに関する注意事項: NodeDefaultTrustStore の代わりに、CellDefaultTrustStore をクリックします。
    7. 「追加プロパティー」の下にある「署名者証明書」をクリックします。
    8. 「ポートから取り出す (Retrieve from port)」をクリックします。
    9. 以下の情報を入力してから、「署名者情報の取得」をクリックします。
      Host
      プロトコルを指定しないで、ID プロバイダーのエンドポイントを入力します。例えば、http:// または https:// のようになります。Google の場合は www.google.com、Facebook の場合は graph.facebook.com と入力します。
      Port
      ID プロバイダー用のポート番号を入力します。 例えば、443 と入力します。
      Alias
      SSL 構成で指定されている証明書別名を入力します。 例えば、Facebook の場合は graph.facebook.com_cert と入力します。
    10. 「取得された署名者情報」を確認してから、「適用」をクリックします。
    11. 「保存」をクリックします。
    12. エラー・メッセージ EJPAK0062E を受け取った場合は、証明書が欠落している可能性があります。 SystemOut.log ファイルを開き、CWPKI0022E: SSL HANDSHAKE FAILURE というログがないか探します。 このエラー・メッセージがあった場合は、domainnameSubjectDN の一部である証明書をインポートします。
  6. 必須: 次のステップを実行して、WebSphere_Portal Server を停止し、再起動します。
    クラスターに関する注意事項: サーバーまたはクラスターのインスタンスをリサイクルします。
    1. コマンド・プロンプトを開いて、次のディレクトリーに移動します。
    2. 以下のコマンドを入力して WebSphere_Portal サーバーを停止します。WebSphere_PortalWebSphere Portal サーバーの名前です。
      • AIX: ./stopServer.sh WebSphere_Portal -username admin_userid -password admin_password
      • HP-UX: ./stopServer.sh WebSphere_Portal -username admin_userid -password admin_password
      • IBM i: stopServer WebSphere_Portal -username admin_userid -password admin_password
      • Linux: ./stopServer.sh WebSphere_Portal -username admin_userid -password admin_password
      • Solaris: ./stopServer.sh WebSphere_Portal -username admin_userid -password admin_password
      • Windows: stopServer.bat WebSphere_Portal -username admin_userid -password admin_password
    3. 次のコマンドを入力して WebSphere_Portal サーバーを開始します。、WebSphere_PortalWebSphere Portal サーバーの名前です。
      • AIX: ./startServer.sh WebSphere_Portal
      • HP-UX: ./startServer.sh WebSphere_Portal
      • IBM i: startServer WebSphere_Portal
      • Linux: ./startServer.sh WebSphere_Portal
      • Solaris: ./startServer.sh WebSphere_Portal
      • Windows: startServer.bat WebSphere_Portal
  7. 必須: 以下のステップをクラスター環境で実行して、OpenidObjCache キャッシュ・インスタンスを構成します。
    1. WebSphere Integrated Solutions Consoleにログオンします。
    2. 「リソース」 > 「キャッシュ・インスタンス」 > 「オブジェクト・キャッシュ・インスタンス」に移動します。
    3. OpenidObjCache を選択します。
    4. 「整合性設定」セクションで、以下の値を設定します。
      • 「キャッシュ複製を使用可能にする」チェック・ボックスを選択する。
      • 「複製の種類」「Both Push and Pull」 を選択する。
    5. 「OK」をクリックします。
    6. 「保存」をクリックします。
    7. クラスター・サーバーを停止してから再起動し、変更を伝搬します。
  8. オプション: ID プロバイダーのセキュリティー設定に応じて、ID プロバイダーのトラスト・アソシエーション用の属性を変更する必要があります。 トラスト・アソシエーションを変更するには、以下のステップを実行します。
    クラスターに関する注意事項: クラスター内の 1 つのノードで、以下のステップを実行します。
    1. WebSphere Integrated Solutions Consoleにログオンします。
    2. 「セキュリティー」 > 「グローバル・セキュリティー」 > 「Web および SIP セキュリティー」 > 「トラスト・アソシエーション」に移動します。
    3. 「インターセプター」を選択してから「com.ibm.portal.auth.OpenIDTAI」を選択します。
    4. プロパティーを追加または変更して、デフォルトの動作を変更します。 例えば、以下のプロパティーを追加または変更できます。
      bindattribute
      このプロパティーは、ID プロバイダーのユーザー ID を含むユーザー・プロファイル属性を保管します。 デフォルト値は labeledURI です。
      loginattribute
      このプロパティーは、ユーザーを一意的に識別する、リポジトリーから取得される属性を定義します。 デフォルト値は uid です。

タスクの結果

新規ユーザーは新しい WebSphere Portal プロファイルを、labeledURI に指定した有効な ID プロバイダーに登録できます。 既存ユーザーは、labeledURI に指定した有効な ID プロバイダーでプロファイルを更新できます。 プロファイルの更新をサポートするには、書き込み可能なユーザー・リポジトリーが必要です。 そうすると、代替ログイン・フィールドを使用して WebSphere Portal にログオンできます。 ユーザーは ID プロバイダーのログイン・ページにリダイレクトされます。