SkyOnDemandをSalesforceの代理認証ゲートウェイとして設定する方法
Salesforceではいくつかのシングルサインオン方法を提供しています。
このうち「代理認証シングルサインオン」では、セールスフォースのログイン画面でユーザ名・パスワードが入力された際、セールスフォースでそれを検証せず、外部Webサービスを呼び出して検証をゆだねることが可能です。このゆだねる先を「代理認証ゲートウェイ」と呼びますが、ここではSkyOnDemandを代理認証ゲートウェイとして利用する方法について説明します。
代理認証シングルサインオンについては、次のヘルプも参照してください。
https://help.salesforce.com/HTViewHelpDoc?id=sso_delauthentication.htm&language=ja
セールスフォース側の準備
- サポートに連絡して、代理認証シングルサインオンを有効化してもらいます。有効化されたら、シングルサインオンさせたいプロファイルに対して「シングルサインオンの有効」にチェックを入れます。
※Developer Editionの場合、2013年8月に申請したところ、有効化まで約1週間を要しました。
※管理者用のプロファイルについては、問題発生時の切り分けができなくなりますので、シングルサインオンを有効化しないことをお勧めします。 - 開発>API から代理認証WSDLをダウンロードします。
SkyOnDemand側の設定
セールスフォースからSkyOnDemandをWebサービスとして呼ぶ設定をします。
- スクリプトの入力変数としてXML型の入力変数を定義します。
- セールスフォースからパラメータを受け取るためにMapperを配置し、Startアイコンからプロセスフローとデータフローでつなぎます。
- そのMapperを開き、入力側にスキーマを読み込みます。スキーマファイルはこちらのXMLをお使いください。なお、読み込んだ直後はEnvelopeとBodyの名前空間指定が消えてしましますので、それぞれsoapenv:Envelope、soapenv:Body と修正します。
- スクリプト内で受け取った、ユーザ名、パスワード、アクセス元IPアドレスを使って認証を行います。
- 最後にセールスフォースにレスポンスを返すMapperを配置し、Endアイコンに向けてプロセスフローとデータフローを引きます。
- そのMapperを開き、出力側にスキーマを読み込みます。スキーマファイルはこちらのXMLをお使いください。なお、読み込んだ直後はEnvelopeとBodyの名前空間指定が消えてしましますので、それぞれsoapenv:Envelope、soapenv:Body と修正します。レスポンスのAuthenticated要素にtrueをセットするとログインでき、falseをセットするとログインが拒否されます。
- できあがったスクリプトをサービス登録します。
- Webサービストリガーを作成し、最初のページに次のように設定します。トリガー名と実行パス(ここでは/authと設定)は任意です。WSDL定義の欄に、セールスフォールからダウンロードしたWSDLの内容を貼り付けます。
- 次ページに次のように設定します。その他、適宜設定を行い、完了します。
- 最後にSkyOnDemandフロント側でHTTPトリガー設定を行います。パスの設定は8.と同じになるよう(ここではauth)設定します。
セールスフォールで代理認証シングルサインオンを有効化
- シングルサインオン設定で、代理ゲートウェイURLにSkyOnDemandを呼び出すためのトリガーURLを貼り付けます。
- 以上で、シングルサインオンが有効になります。