【図解】Entra IDとSalesforceのSSO連携手順ハンズオン Part1

シングルサインオン

はじめに:シングルサインオン導入の目的と技術的背景

本記事では、Microsoft Entra IDとSalesforceのSAML認証によるシングルサインオン(SSO)連携の構築手順を実機ベース・キャプチャ画像付きで解説します。

企業におけるSaaS利用が拡大する中、ID管理はセキュリティの重要課題となっています。各SaaSごとにID/パスワードを管理する従来の運用は、以下のリスクとコストを増大させます。

  1. 従業員のセキュリティリスク : 従業員のパスワードの使い回し、フィッシング攻撃によるパスワード誤入力のリスク
  2. 管理者の運用コスト : パスワードリセット対応、退社時のアカウント消込の工数

特に、このパスワードリセット対応で悩まされている管理者も多いのではないかと思います。実際、従業員のパスワード忘れ・サービスのロックで、各種社内窓口を探しサポート依頼する手間が、従業員にはありますし、また、IT管理者も自分の作業を止めて、早急にリセットしないといけません。SSOの導入は、これらの課題に対し、認証情報をEntra IDに集約することでセキュリティ強化を行いつつ、運用工数の削減を実現することができます。

私がお客様のIT運用をしていた頃に、生産性を下げていた業務の一つはパスワードリセットでした。 リセットしてあげても、ユーザーは無意識に慣れ親しんだ古いドメインパスワードを入力してPCをロックさせてしまうのです。 このリセットの繰り返しは、管理者もエンドユーザーもモチベーション低下します。エンドユーザーがパスワードを覚える運用は、もはや限界なのです

本検証では、SAML 2.0プロトコルを用いたフェデレーション設定を、実環境に近い形で実装します。

検証構成と前提条件

本ハンズオンでは、以下の環境を構築します。

  • Identity Provider(IdP)として、Microsoft Entra IDの無料版で実施可能、本記事のSSO連携のみであればEntra ID P1, P2ライセンスは不要
  • Service Provider(SP)として、Salesforce Developer Edition(開発者向けの無償ライセンス)、SAML連携の検証が可能

手順1:Salesforce Developer Edition のテナント作成

検証用のSalesforce環境を取得します。 こちらの公式サイトより、Developer Editionにサインアップします。特に注意する点はございません。以下を参考にして、個人のメールアドレスを入力し、”I agree to the …”にチェック、reCAPTUREを処理し、問題なければ”Sign Me Up”ボタンをクリックします。

アカウント登録後、送付されるメールからパスワードをリセットし、またsalesforceのログインIDとURLも保存しておきます。

上記の通りログインできたら手順1は終了です。

手順2:Entra ID で Salesforce アプリケーションを作成

Entra ID側でIdPとして、SalesforceのSPの登録を行います。Microsoft Entra アプリケーションギャラリーで設定します。

  1. Microsoft Entra 管理センターに管理者アカウントでサインインします。
  2. [エンタープライズ アプリケーション] > [+新しいアプリケーション]を選択します。
  3. テキストボックスにSalesforceと入力し、Salesforceを選択、作成をクリックします

これにより、Microsoft Entra IDテナント内にSalesforce連携用のサービスプリンシパルが作成されます。

手順3:SAML SSOの基本構成

SAML連携に必要なSPとIdPの信頼関係を設定します。

3-1. Salesforceのメタデータ取得(SP側)

Salesforceにログインします。ログインURLはhttps://developer…ではなく、手順1のメール本文中に記載されております。

ログイン後、画面右上[歯車] > [設定] > 画面左上の検索ボックスで”私のドメイン”で検索 > [私のドメイン] で現在のドメイン名を確認します。編集ボタンをクリックし、”[私のドメイン]の名前”の部分を任意に変更します。例えば、”myssotest”あるいは”SSOEntraSalesforce”、”testsso001″など覚えやすいものに変更します。”使用可能か調べる”ボタンをクリックし、緑の利用可が表示されれば、保存をクリックします。

次の画面遷移で、”ステップ2: プロビジョニングが進行中”と出ます。5分ほど待つと、Salesforceからメールが届き、”Salesforceの[私のドメイン] xxx.develop.my.salesforce.comのテスト準備が整いました”と通知が来ます。また、Salesforceの画面をリロードすると以下の画面に切り替わっておりますので、”新しいドメインをリリース”をクリックします。

自動でログアウトされますので、そのブラウザ画面を閉じ、確認のため新しいURLでユーザー名とパスワードを入力し、ログインできることを確認します。

3-2. Entra IDの設定(IdP側)

  1. Microsoft Entra 管理センターに管理者アカウントでサインインし、画面左の[エンタープライズアプリ] > [Salesforce]をクリックします。作成したSalesforceアプリの管理画面で、[シングル サインオン] を選択します。
  2. シングルサインオン方式として [SAML] を選択します。
  3. [SAML によるシングル サインオンのセットアップ] > [基本的な SAML 構成] > [編集]をクリックし、手動で以下を設定、保存をクリックします。
    • 識別子 (エンティティ ID):https://[私のドメイン].develop.my.salesforce.com
    • 応答 URL (Assertion Consumer Service URL) : https://[私のドメイン].develop.my.salesforce.com
    • サインオンURL : https://[私のドメイン].develop.my.salesforce.com

Microsoft公式には以下の通り書かれております。同記事内にもあります通り、若干異なっております。下のURLではなく、正しくはブログ記事のURLですので、ご注意ください。

開発者アカウント: https://<subdomain>-dev-ed.my.salesforce.com

  1. SAML証明書セクションでは、Entra ID側の証明書を取得し、Salesforceへアップロードするため、 [SAML 署名証明書] セクションにある [フェデレーション メタデータ XML] をダウンロードします。

xmlファイルがダウンロードできたら完了です。

手順4:Salesforce 側でのSAML有効化と設定

Salesforce側でSAML認証を設定します。

  1. Salesforceの画面右上の[歯車] > [設定 (Setup)] メニューを開きます。
  2. 画面左上検索ボックスに「シングル」と検索し、シングルサインオン設定をクリックします。
  3. [編集] をクリックし、[SAML Enabled] にチェックを入れて保存します。SAML有効化にチェックマークがつきます
  1. SAMLシングルサインオン構成の[メタデータファイルから新規作成] をクリックし、手順3でMicrosoft Entra IDからダウンロードしたXMLファイルを選択、作成ボタンをクリックします。
  2. 以下の通り設定し、保存をクリックします。
    • 発行者、Entity ID、ログインURL、ログアウトURL等が自動入力されます
    • 画面上部の名前、API参照名は、任意の分かりやすい文字列にします。私の場合は名前は”EntraSSO”、API参照名は”EntraSSOAPI”としました
    • 画面中央のSAML ID種別は”アサーションには、ユーザーオブジェクトの統合IDが含まれます”を選択します
    • 今回はジャストインタイムのユーザープロビジョニングは利用せず、統合IDでEntra IDユーザーとSalesforceユーザーとを紐づけします
    • それ以外は、手順3でダウンロードしたXMLファイルの内容が自動で設定されており、変更は不要です

4-1. ログイン画面へのSSOボタン表示設定

SAML設定を作成しただけでは、Salesforceログインページに適用されません。画面左上検索ボックスで”私のドメイン”で検索、[私のドメイン]を選択 > 認証設定の[編集]をクリックすると、「認証サービス」という設定項目が表示されます。ここで、先ほど作成した SAML 設定の名前(例:EntraSSO)にチェックし、保存ボタンをクリックすることで、Salesforce のログイン画面にEntra ID 経由のログインボタンが表示されるようになります。

一度ログアウトすると、Salesforceのログイン画面にEntra ID経由のログインボタンが表示されます。

まだSSOが組みあがっているわけではないため、ユーザー名とパスワードでログインしておきます。

画面左中央のユーザー名・パスワードフィールドは、Salesforceの中にある認証情報を使って、ローカルログインするためのものです。一方で、Entra ID経由のログインボタンは、Entra IDを使ったSSOのログインするためのものです。

手順5:ユーザー割り当て

Entra IDのエンタープライズアプリケーションは、明示的に割り当てられたユーザーのみがアクセス可能です。ここでは、Microsoftクラウドでユーザーを作成、Salesforceを割り当てます。次いで、Salesforceで新しいエンドユーザーを作成します。この二つを、Salesforce内の統合IDで紐づけます。

Microsoftクラウドでのユーザー作成

  1. Microsoft 365管理センターにログイン、画面左の[ユーザー] > [アクティブなユーザー] > [ユーザーの追加]で、エンドユーザーを作成します。特に難しい部分はありませんが、製品ライセンスの割り当てでは、”製品ライセンスなしでユーザーを作成する”を選択します。それ以外は、すべてデフォルトの設定の通りに進めます。今回はuser01@xxx.onmicrosoft.comを作成しました。
  1. 作成後は、Microsoft Entra管理センターにアクセス、画面左の[エンタープライズアプリ] > [Salesforce] > [1. ユーザーとグループの割り当て] > [ユーザーまたはグループの追加] >ユーザーにuser01を、ロールにStandard Userをクリック、割り当てをクリックします。

Salesforceでのユーザー作成

  1. Salesforceにログイン、画面右上[歯車] > [設定 ] > 画面左上の検索ボックスで”ユーザー”で検索 > [ユーザー]を選択
  1. [新規ユーザー]で、ユーザーライセンスはSalesforce、プロファイルは標準ユーザー、メール、ユーザー名はMicrosoft 365管理センターで作成したUPN(user01@xxx.onmicrosoft.com)を設定します。ほかの部分は下の画像の通り設定します。画面下にスクロールし、統合IDをUPNに設定します。

この統合IDを見て、SalesforceはEntraのユーザーと紐づけを行います。ほかの情報が異なっていても、統合IDが一致していれば、SalesforceはEntraのユーザーは紐づきます。

手順6:動作検証

設定の有効性を確認するため、以下の2パターンで疎通確認を実施します。

パターンA:ポータルからのSSO

  1. 検証用ユーザー(user01@xxx.onmicrosoft.com)でMy Appsポータル(https://myapps.microsoft.com)にサインインします。これまでのブラウザではEntra IDの管理者のセッションが残っているため、異なるブラウザ(ChromeでEntra ID設定していたなら、EdgeなどでSSOを実施)を使います
  1. Salesforceをクリックします
  2. “ログインEntraSSO”をクリックします
  1. 自動的にSalesforceにログインできたことを確認します
  2. このやり方ですと、エンドユーザーからはSalesforceのログイン画面に遷移する手間が余計であるため、管理者でSalesforceにログインし、画面右上の[歯車] > [設定] > 画面左上の検索ボックスで”私のドメイン”で検索 > 画面左の[私のドメイン] > 認証設定の[編集]をクリックします。ログインフォームのチェックを外して保存をクリックします。

注意する点としては、管理者がこれ以降ログインする場合は、https://xxxx.develop.my.salesforce.com/?login
が管理者のログインURLとなることです

  1. user01で、salesforceおよびmyappsポータルからログアウトして、再度myappsポータルにログイン、Salesforceをクリックすると、今度はSalesforceのログイン画面に遷移することなく、Salesforceにログインできたことを確認します。ログイン後は、salesforceおよびmyappsポータルからログアウトします
  2. 最後に、上述のhttps://xxxx.develop.my.salesforce.com/?loginで、管理者でログインできることも確認しておきます

パターンB:SP Initiated(Salesforce起点)

  1. Salesforce、My Appsポータルからログアウトしていることを確認します
  2. SalesforceのマイドメインのURL(https://xxxx.develop.my.salesforce.com/?login)へアクセスします。
  3. Salesforceの画面ではなく、Entra IDのUserIDとパスワード入力画面で認証情報を入力し、Salesforceにログインできることを確認します。

まとめ

本手順により、Entra IDとSalesforce間のSAML認証基盤が確立されました。 これにより、ユーザーは単一のIDでSalesforceを利用可能となり、管理者はIDの一元管理が可能となります。

ただし、現状の構成(SSOのみ)では、ID/パスワードが漏洩した場合、外部からの不正アクセスを防ぐことはできません。 より強固なセキュリティ実装として、次回はEntra IDの「条件付きアクセス」を用いた多要素認証(MFA)の強制ポリシーの適用手順を解説します。

補足事項

上記設定の注意点は以下の通りです。

  1. 通常はSalesforce導入済みで、あとからEntra ID導入のケースが多いだろうと思います。上述の通り、Salesforceの既存ユーザーとEntra IDのユーザー名は、統合IDで紐づけます。これで、Entra IDを導入した後でも、Salesforce利用中の既存のユーザー環境などはそのまま利用可能です
  2. 手順6でSalesforceのローカルログインを利用できなくしております。これにより、エンドユーザーはSalesforceのパスワードを入力する場所がなくなり、さらにフィッシング詐欺にあいにくくなります
  3. 同じく手順6では、My Appsポータルにユーザー名とパスワードを入力し、ログインしております。通常であれば、Hybrid Entra ID JoinあるいはEntra ID JoinしたPCにログインすると、PRT(Primary Refresh Token)が発行され、SSO用のトークンを使いmyappsポータルに自動でログインできるようになります

コメント

タイトルとURLをコピーしました