SkyOnDemandをSalesforceの代理認証ゲートウェイとして設定する方法

Salesforceではいくつかのシングルサインオン方法を提供しています。
このうち「代理認証シングルサインオン」では、セールスフォースのログイン画面でユーザ名・パスワードが入力された際、セールスフォースでそれを検証せず、外部Webサービスを呼び出して検証をゆだねることが可能です。このゆだねる先を「代理認証ゲートウェイ」と呼びますが、ここではSkyOnDemandを代理認証ゲートウェイとして利用する方法について説明します。

代理認証シングルサインオンについては、次のヘルプも参照してください。
https://help.salesforce.com/HTViewHelpDoc?id=sso_delauthentication.htm&language=ja

 セールスフォース側の準備

  1. サポートに連絡して、代理認証シングルサインオンを有効化してもらいます。有効化されたら、シングルサインオンさせたいプロファイルに対して「シングルサインオンの有効」にチェックを入れます。
    ※Developer Editionの場合、2013年8月に申請したところ、有効化まで約1週間を要しました。
    ※管理者用のプロファイルについては、問題発生時の切り分けができなくなりますので、シングルサインオンを有効化しないことをお勧めします。
  2. 開発>API から代理認証WSDLをダウンロードします。

SkyOnDemand側の設定

セールスフォースからSkyOnDemandをWebサービスとして呼ぶ設定をします。

  1. スクリプトの入力変数としてXML型の入力変数を定義します。
  2. セールスフォースからパラメータを受け取るためにMapperを配置し、Startアイコンからプロセスフローとデータフローでつなぎます。 
  3. そのMapperを開き、入力側にスキーマを読み込みます。スキーマファイルはこちらのXMLをお使いください。なお、読み込んだ直後はEnvelopeとBodyの名前空間指定が消えてしましますので、それぞれsoapenv:Envelope、soapenv:Body と修正します。
  4. スクリプト内で受け取った、ユーザ名、パスワード、アクセス元IPアドレスを使って認証を行います。
  5. 最後にセールスフォースにレスポンスを返すMapperを配置し、Endアイコンに向けてプロセスフローとデータフローを引きます。
  6. そのMapperを開き、出力側にスキーマを読み込みます。スキーマファイルはこちらのXMLをお使いください。なお、読み込んだ直後はEnvelopeとBodyの名前空間指定が消えてしましますので、それぞれsoapenv:Envelope、soapenv:Body と修正します。レスポンスのAuthenticated要素にtrueをセットするとログインでき、falseをセットするとログインが拒否されます。
  7. できあがったスクリプトをサービス登録します。
  8. Webサービストリガーを作成し、最初のページに次のように設定します。トリガー名と実行パス(ここでは/authと設定)は任意です。WSDL定義の欄に、セールスフォールからダウンロードしたWSDLの内容を貼り付けます。
  9. 次ページに次のように設定します。その他、適宜設定を行い、完了します。
  10.  最後にSkyOnDemandフロント側でHTTPトリガー設定を行います。パスの設定は8.と同じになるよう(ここではauth)設定します。


セールスフォールで代理認証シングルサインオンを有効化 

  1. シングルサインオン設定で、代理ゲートウェイURLにSkyOnDemandを呼び出すためのトリガーURLを貼り付けます。
     
  2. 以上で、シングルサインオンが有効になります。