おはようございます。ロジカル・アーツ株式会社のSE 輪島 幸治です。
SalesforceからSalesforceにSAMLシングルサインオンで連携する Salesforceインテグレーションの記事を執筆させて頂きます。
この記事は、2つのSalesforce組織を使用します。 初心者向けに、IDプロバイダー側のSalesforce組織の設定。 およびからサービスプロバイダー側のSalesforce組織の設定。
2つのSalesforce組織の連携設定。そして、IDプロバイダー側のSalesforce組織から、 サービスプロバイダー側のSalesforce組織のユーザ名とパスワードを使用することなく ログインする方法までをご紹介させて頂きます。
ブログ記事の範囲としては、2つのSalesforce組織の設定と連携設定、 SAMLシングルサインオンを用いたログイン検証を行うところまでです。
IDプロバイダー側のSalesforce組織にて設定した統合IDを実行して、 その結果、サービスプロバイダー側のSalesforce組織にログインすることができれば目標達成としています。 ※この記事では、IDプロバイダーをIDP、サービスプロバイダーをSPと表記します。
- はじめに
- IDプロバイダの有効化(IDP側Salesforce)
- 統合IDの設定(SP側Salesforce)
- シングルサインオン設定(SP側Salesforce)
- 統合IDの設定(IDP側Salesforce組織)
- 接続アプリケーションの作成(IDP側Salesforce)
- Salesforce ログイン(IDP側Salesforceログイン画面からSP側Salesforce)
- まとめ
- 備考
はじめに
Salesforceは、ID管理という機能があり、Salesforceが他システムのIDを管理する役割を担うことができます。 SalesforceのIDを使用して、他システムにログインすることができます。 この記事では、初心者向けにSAMLシングルサインオンについて記載させて頂きます。
エンジニアの皆様は、合わせて関連する公式のドキュメントもご参照下さい。 設定手順については、 公式のヘルプに、手順が記載されています。
公式ヘルプ: SAML ID プロバイダとしての Salesforce
SAMLついて: Identity の基本 - ID に関する用語
ユーザが繰り返しログインせずに Salesforce 組織とアプリケーションの間をシームレスに移動できるようにするには、シングルサインオン (SSO) を設定します。Security Assertion Markup Language (SAML) は、SSO を可能にするプロトコルです。
シングルサインオン自体は、システムインテグレーションのにおける一般的な用語です。
シングルサインオンについて シングルサインオン(Single Sign-On/SSO)
この記事の目的
対象者
この記事では、他システムのログインIDをSalesforceと連携するシステム基盤の構築などで、 技術検証でSAMLのインテグレーションを行う方向け。 あるいはSalesforceを使用していて、 初めて他システムとのシングルサインオンを検討する場合を想定しています。
また、Salesforceを使用していて、シングルサインオンを使用する場合に、 検証環境がないため、IDP及びSP両方ともSalesforceで構築して、 SAMLシングルサインオン連携設定を行い方を対象としています。
シングルサインオンの流れがわかっておいた方が良いため、 最初はaxiomでサービスプロバイダー側のシングルサインオン設定をしておいた方が良いと思います。 (axiomのシングルサインオンの記事はこちら)
目標
SAMLシングルサインオンでSalesforceを用いる場合に、他システム連携の設定理解を目標とした記事です。 Salesforceの設定をする時間がないので、画像だけで設定概要を知りたいという方も対象としています。 この記事では、公式のヘルプを補足する記事として、2つのSalesforce組織を使用して、 SAMLシングルサインオン設定を行う手順について、画像付きでご紹介させて頂きます。
概要
こちらの記事で紹介させて頂くSAMLシングルサインオンでは、 IDP側のSalesforceからSP側のSalesforceに、ログインを行います。
Salesforceの開発者環境は無償で取得できますので、 シングルサインオンの検証を行いたいという要望であれば、Salesforce同士で検証することをお勧めします。
システムのID連携基盤としてのシングルサインオンについて
シングルサインオンは、最初の疎通確認設定が行えると、多くのシステムとの連携が行えます。
2021年5月19日現在で、SalesforceがIDプロバイダーの場合で、35個種類のSPとシングルサインオンする方法が記載されたヘルプが公開されています。 また、設定手順のポイント集も用意されています。
公式ヘルプ: Salesforce を SAML ID プロバイダとして使用した SSO の設定例
公式ナレッジ: シングルサインオン (Single Sign-On) ポイント集
近年では、デジタル化の発展に伴い、システムアーキテクチャについて多くの議論が行われています。 ID管理や他システム連携などにおけるシングルサインオンは、 今後のシステムの連携基盤のシステムアーキテクチャなどを検討する上でも重要な要素と言えます。
参考:一般社団法人情報処理学会 - 会誌「情報処理」 - デジタルアーキテクチャデザイン:編集にあたって -Society 5.0の実現に向けた挑戦者へのエール-/概要
1回分かると簡単なので、Salesforceでのシングルサインオン設定の実装をご検討下さい。 Salesforceにて設定した単一のIDで、他のシステムとシームレスに連携することができます。
設定手順
シングルサインオンの設定手順ですが、 SP側の設定とIDP側の設定を交互に行う必要があります。
- IDプロバイダの有効化(IDP側Salesforce)
- 統合IDの設定(SP側Salesforce)
- シングルサインオン設定(SP側Salesforce)
- 統合IDの設定(IDP側Salesforce組織)
- 接続アプリケーションの作成(IDP側Salesforce)
- Salesforce ログイン(IDP側Salesforceログイン画面からSP側Salesforce)
各手順について、順に説明させて頂きます。
IDプロバイダの有効化(IDP側Salesforce)
まず、IDP側Salesforce組織にログインして、SalesforceをIDPとして使用するための設定を行います。 今回は、2つのSalesforce組織を使用します。2つのSalesforce組織にてユーザ名の表示が同じ場合は、ユーザ名の後に(IDP)や(SP)などをつけるなどして区別つけやすいユーザ名として下さい。
※こちらの記事の画像では、同一のユーザ名を使用させて頂きます。
私のドメインの設定
IDPの設定を行うにあたり、Salesforce組織の私のドメイン設定を有効化及び設定します。 Winter'21 以降で作成された本番組織にはデフォルトの [私のドメイン] が設定されています。 私のドメイン画面を表示して、私のドメインが有効になっていることを確認します。
IDプロバイダの有効化
私のドメインの設定後、ID プロバイダの有効化を行います。 ID プロバイダの有効化設定は、有効化を押下して、IDプロバイダ証明書を選択して保存するのみです。 IDプロバイダの設定を開き、[IDプロバイダを有効化]を押下して下さい。
[設定] > [セキュリティのコントロール] > [ID プロバイダ]
証明書を選択して[保存]を押下します。 証明書は、ID プロバイダ証明書であり、サービスプロバイダーと通信する時に、 salesforce.comが使用する証明書です。
初回の設定の際には、デフォルト設定にて、[保存]を押下して下さい。 保存を押下すると、ポップアップウィンドウが表示されますが、[OK]を押下して下さい。 ID プロバイダが有効化されます。
- 証明書のダウンロード
[発行者]を確認して、[証明書のダウンロード]を押下します。 [発行者]は、後ほどSP側のSalesforce組織の設定にて使用します。
ダウンロードしたIDプロバイダー証明書(今回の場合は、[SelfSignedCert_08Apr2021_124448.crt])は、 SP側のSalesforce組織にて、シングルサインオン設定を行う際に 必要なファイルとなります。後ほど使用しますので、任意のディレクトリに保存して下さい。
統合IDの設定(SP側Salesforce)
次に、SP側のSalesforce組織の設定です。 この記事では、同一のユーザ名を使用していますが、シングルサインオンにて検証を行う場合は、 区別つけやすいユーザ名として下さい。
SP側Salesforce組織で、SAML シングルサインオンで使用する統合IDの設定を行います。 統合IDは、SP側のSalesforce組織のSAML シングルサインオン構成にて使用します。 ユーザの管理にある各ユーザの詳細画面にて設定することができます。
[設定] > [ユーザの管理] > [ユーザ]
統合IDに使用するメールアドレス項目値を入力して、サービスプロバイダ側の統合IDを設定します。
項目名 | 項目値 |
---|---|
統合 ID | logical2021webapp@gmail.com.salesforcesso01.idp |
シングルサインオン設定(SP側Salesforce)
SAMLを使用した統合シングルサインオン設定の有効化
SP側のSalesforce組織にて、SAMLの有効化設定を行います。 シングルサインオンでのSAMLの有効化設定は、"シングルサインオン設定 - SAMLを有効化"という設定項目にチェックを入れるのみです。
シングルサインオン構成の設定
SAMLシングルサインオン設定は、SAMLの有効化設定と同じページに設定箇所があります。 SAML シングルサインオン構成にある[新規]を押下して作成します。
SAML シングルサインオン構成設定画面が表示されますので、IDPの設定情報を入力して、 IDプロバイダ証明書をアップロードして、SP側の設定を行います。 IDプロバイダ側のSalesforce組織から取得した証明書をアップロード設定して、入力項目を設定して、[保存]を押下します。
SAMLでシングルサインオンを行う設定値は、赤枠で囲った9箇所です。 各項目にIDプロバイダの認証情報を設定することで、 SP側では、シングルサインオンでのログインに対応できます。
項目名 | 項目値 |
---|---|
名前 | Salesforce IDP 設定 |
SAML のバージョン | 2.0 |
発行者 | https://d5h00000164hleai-dev-ed.my.salesforce.com |
ID プロバイダの証明書 | IDP側でダウンロードした証明書 (今回の場合は、[SelfSignedCert_08Apr2021_124448.crt]) |
署名要求メソッド | RSA-SHA256 |
SAML ID 種別 | アサーションには、ユーザオブジェクトの統合 ID が含まれます |
SAML ID の場所 | ID は、Subject ステートメントの NameIdentifier 要素にあります |
サービスプロバイダの起動要求バインド | HTTP リダイレクト |
API 参照名 | Salesforce_IDP |
エンティティ ID | https://d5h00000164iteai-dev-ed.my.salesforce.com/ |
設定後は、エンドポイントセクションにある[ログイン URL]に記載のURLを保存して、ID プロバイダー側のSalesforce組織にて使用します。
項目名 | 項目値 |
---|---|
Idp-init のログイン URL | Salesforce IDP 設定https://d5h00000164hleai-dev-ed.my.salesforce.com/idp/login?app=0sp5h000000blZP |
統合IDの設定(IDP側Salesforce組織)
IDP側Salesforce組織でシングルサインオンで使用する統合IDの設定を行います。 SP側のSalesforce組織設定した統合IDと同じメールアドレスを設定して下さい。 設定した統合IDは、SAML Responseを生成するために使用します。
[設定] > [ユーザの管理] > [ユーザ]
IDP側のSalesforce組織にて設定した統合IDを設定します。
項目名 | 項目値 |
---|---|
統合 ID | logical2021webapp@gmail.com.salesforcesso01.idp |
接続アプリケーションの作成(IDP側Salesforce)
SalesforceをIDプロバイダとして使用するために接続アプリケーションを作成します。 アプリケーションを開き、接続アプリケーションセクションの[新規]を押下することで、接続アプリケーションが作成できます。
[設定] > [作成] > [アプリケーション]
新規接続アプリケーションの作成では、基本情報のセクションにて、 接続アプリケーション名、API参照名、取引先責任者メールを設定します。 そして、Webアプリケーション設定のセクションにて、シングルサインオン構成にて 得られたエンティティIDなどを設定して、[保存]を押下することで、 接続アプリケーションが作成されます。
項目名 | 項目値 |
---|---|
接続アプリケーション名 | Salesforce IDプロバイダ側 サービスプロバイダー設定 |
API 参照名 | Salesforce_IDP_forceconnectedapps |
取引先責任者 メール | logical2021webapp@gmail.com |
項目名 | 項目値 |
---|---|
開始 URL | https://d5h00000164iteai-dev-ed.my.salesforce.com/home/home.jsp |
SAML の有効化 | チェック |
エンティティ ID | https://d5h00000164iteai-dev-ed.my.salesforce.com/ |
ACS URL | https://d5h00000164iteai-dev-ed.my.salesforce.com |
件名種別 | 統合ID |
名前 ID 形式 | [urn:oasis:names:tc:SAML:2.0:nameid-format:persistent] |
発行者 | https://d5h00000164hleai-dev-ed.my.salesforce.com |
IdP 証明書 | デフォルトのIdP証明書 |
SAML メッセージの署名アルゴリズム | SHA256 |
接続アプリケーション作成後、SP側にログインするURLの取得と接続アプリケーションを使用するプロファイルの設定を行います。 接続アプリケーションセクションのアクションにある[Manage]を押下して、接続アプリケーションの詳細画面を表示します。
SAML ログイン情報セクションにある[Idp-init のログイン URL]のURLを控えて置きます。 URLはIDP側のSalesforce組織のログインIDにて、SP側のSalesforce組織にログインするために使用します。
そして、プロファイルセクションの[プロファイルを管理する]を押下します。 プロファイルの選択画面になるため、接続アプリケーションを使用できるプロファイルを設定します。
アプリケーションプロファイルの割り当て画面にて、 接続アプリケーションを使用するユーザのプロファイルを選択します。 今回は、[システム管理者]にチェックを入れて[保存]します。
Salesforce ログイン(IDP側Salesforceログイン画面からSP側Salesforce)
Idp-init のログイン URLから統合IDでログイン
SP側Salesforce組織にIDP側Salesforce組織のIDでログインするには、シングルサインオン用のログインURLからログインを行う必要があります。
接続アプリケーションの詳細画面を確認した際に控えておいた[Idp-init のログイン URL]からログインします。
Salesforceのログインページが表示されますが、「このページにアクセスするには、Salesforce にログインする必要があります。」という表示がされます。 この表示は、通常のログイン画面では表示されず、Idp-init のログイン URLを表示した際に表示されます。
IDP側のSalesforceID・パスワードを入力して、[ログイン]を押下すると、SAML シングルサインオンにて、IDP側のSalesforceでなく、SP側のSalesforce組織にログインします。
まとめ
以上が、IDP側をSalesforce、SP側もSalesforceに設定したシングルサインオン設定手順です。
この記事の範囲であるIDP側のSalesforceにて設定した統合IDにて、 SP側のSalesforce組織にログインする連携まではできたと言えます。
ブログ記事で紹介させて頂いた方法を用いることで、 SAMLシングルサインオンにてSalesforce連携するインテグレーションを検討することができます。
記事で紹介させて頂きました通り、SalesforceはシングルサインオンにおけるIDPとして使用することができます。 皆様もWebシステムで統合ID管理を行うようなプロジェクトでのIDP検討時に、 SalesforceをIDPという役割で使用することを検討してみて下さい。
関連する公式ヘルプ:
Microsoft AD FS を ID プロバイダとして使用した Salesforce への SSO の設定
ジャストインタイムプロビジョニングの要件および SAML アサーション項目
備考
この記事は、著者が独自に調査した結果を、ロジカル・アーツ株式会社のブログにて記事化したものです。 記載されている手順やアドレスなどは、予告なく変更される場合もあります。
この記事に記載されている会社名、商品名などは一般に各社の商標または登録商標です。なお、本文中には、™、®を明記しておりません。
クラウドアプリケーションは、成長が著しいため、機能更新も早いです。至らない箇所もあると思いますが、お気付きの点がありましたらお問い合わせ下さい。
クラウドアプリケーショントレンド(参考)
Stack Overflow Insights - Stack Overflow Trends
Yahoo Finance - Salesforce.com Inc (CRM) Interactive Stock Chart
よろしくお願い致します。