このページではOpenAMをIdPとし、SalesforceをSPとしてSAML連携させる方法を説明します。
事前準備
IdP構築
OpenAMはIdPとして構築が済んでいるものとします。
OpenAMのメタデータを出力し、保存しておきます。
ユーザー情報の確認
OpenAM側とSalesforce側に同じ名前のユーザーが登録されている必要があります。
OpenAMに登録されているユーザーの「汎用ID」とSalesforceに登録されているユーザーの「統合ID」が一致していることを確認して下さい。
OpenAMのユーザー情報は管理コンソールの「(レルム名)」→「対象」から確認できます。
Salesforceのユーザー情報は管理者アカウントの「ユーザ」→「ユーザ」→「(ユーザー名)」をクリックすると確認できます。
Salesforce側の設定
SAMLでのログインを有効化
「ID」→「シングルサインオン設定」を開きます。
「編集」をクリックし、「SAMLを有効化」にチェックを入れてから「保存」をクリックします。
IdPの登録
「ID」→「シングルサインオン設定」を開きます。
「参照」をクリックし、OpenAMのメタデータをアップロードします。
アップロードが完了すると、Salesforce側の挙動を設定する画面にうつります。
この画面で以下の設定を行います。
- 「名前」に任意の名前を設定します。この名前が後の設定時に表示されます。
- 「SAML ID種別」は「アサーションには、ユーザオブジェクトの統合IDが含まれます」を選択します。
- 「SAML IDの場所」は「IDは、SubjectステートメントのNameIdentifier要素にあります」を選択します。
- 「サービスプロバイダの起動要求バインド」は「HTTPリダイレクト」を選択します。
- 「シングルログアウトを有効にする」のチェックを外します。
「保存」をクリックして設定した内容を保存します。
「メタデータのダウンロード」をクリックし、Salesforceのメタデータを保存しておきます。このメタデータは後にOpenAMにSalesforceの情報を登録する際に使用します。
ログイン方法の変更
「会社の設定」→「私のドメイン」→「認証設定」→「編集」をクリックします。
「認証サービス」の「ログインフォーム」のチェックを外し、先ほど設定した名前の方にチェックを入れて「保存」をクリックします。
これでログイン時にSalesforceの認証フォームではなく、SAMLでの認証が行われるようになります。
以上でSalesforce側の設定は完了です。
OpenAM側の設定
SPの登録
管理コンソールを開き「連携」→「エンティティのインポート」をクリックします。
「レルム名」の選択欄でサービスを利用するレルムを選択します。
「メタデータはどこに存在しますか?」は「ファイル」を選択し、「アップロード」をクリックしてSalesforceのメタデータをアップロードします。
「了解」をクリックするとSalesforceのデータが登録されます。
SPをトラストサークルに追加
「(トラストサークル名)」をクリックします。
「選択可能」の欄にあるSalesforceのエンティティIDを選択し(「私のドメイン」のURLが設定されます)、「追加」をクリックします。
「保存」をクリックして変更を反映します。
ユーザー情報のマッピングの設定
「連携」に戻り、「エンティティプロバイダ」のOpenAMのエンティティIDをクリックします。
NameID 値マップに「urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified=uid」を追加します。 既に設定されている場合はこの作業は不要です。
- 「urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified=」を選択し「削除」をクリックします。
- 「新しい値」に「urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified=uid」を入力し「追加」をクリックします。
「保存」をクリックして変更を反映します。
以上でOpenAM側の設定は完了です。
実際にログインしてみる
ここまでで設定は完了です。正しく設定できているか、実際にログインして確認してみましょう。
Salsforceの「会社の設定」→「私のドメイン」の設定を確認します。このドメインがログインURLになります。
このURLにアクセスすると、OpenAMのログイン画面にリダイレクトされます。
ユーザー名とパスワードを入力し、OpenAMでの認証に成功するとSalesforceの画面にリダイレクトされます。
OpenAMの認証でSalesforceにログインすることができました。