top of page
レザーノート

BLOG

Salesforce × AWS CognitoでSSO認証を構築してみた

  • 執筆者の写真: 遥斗 錦
    遥斗 錦
  • 4 時間前
  • 読了時間: 6分
SSO連携

こんにちは。ネクスト・アイの錦です。

今回は、SalesforceでSSO認証の実装について紹介します。

「SSO認証って聞いたことあるけどのように設定するの?」、「Salesforceとモバイルアプリで連携させたいけど何から始めたらいいのかわからない!」という方でもわかりやすく解説していますので、ぜひ最後まで読んでいただけると幸いです。


  1. SSO認証って何?

SSO認証の説明

SSO(Single Sign-On)認証とは、ユーザーが一度の認証で、複数のサービスへ再ログインなしでアクセスできる仕組みです。


「サービスごとにIDとパスワードを入力するの面倒だな...」と感じたことはありませんか?


そのストレスを解消してくれるのがSSOです。

例えば会社のPCに一度ログインするだけで、複数のサービスがログイン済みで利用できるあの仕組みです。

SSOの主なメリット

  • サービスごとにIDとパスワードを入力する必要がない

  • パスワード管理を一元化できる

  • セキュリティの強化

特に3つ目のセキュリティ強化は、開発者目線でも重要なポイントだと感じています。

認証というリスクの高い処理を一元管理できるのは非常に心強いです。


今回はSalesforceを認証元(IdP)として、ユーザーがSalesforceのログイン画面で認証し、その結果をCognitoが仲介してモバイルアプリへ戻す構成でSSOを実装します。モバイルアプリ側でSalesforceのパスワードを保持・検証するのではなく、リダイレクトによる認証フローでログインを成立させるのがポイントです。

  1. 今回構築した構成

データの流れ

データの流れとしては以下の通りです。

①ログイン:モバイルアプリで「ログイン」を押すと、AWS Cognitoへ遷移します

②認証連携:CognitoがSalesforceのログイン画面へリダイレクトし、ユーザーの本人確認を委譲します

③認証:ユーザーがSalesforceのID/パスワードを入力して認証します

④トークン返却:認証成功後、CognitoがSalesforceから認証結果を受け取り、モバイルアプリにトークンを返します

⑤ログイン完了:モバイルアプリは受け取ったトークンを使ってログイン状態を確立します

今回の実装では、Cognitoを中間に挟む構成にしました。

直接SalesforceとモバイルアプリをつなぐことはできますがCognitoを中間に挟むことで、モバイルアプリ側でSalesforce特有の認証処理を意識せずに実装できるというメリットがあります。


また将来的に「GoogleログインやLINEログイン」などを追加したくなった際も、Cognito側の設定のみで認証手段を拡張することができるというメリットがあります!


  1. AWS Cognito側の設定

salesforceとモバイルアプリをつなぐためのCognito設定を行っていきます。

※AWSアカウントはある前提で進めます


設定手順は以下の通りです。

①Cognitoユーザプールの作成

②OIDCプロバイダーとしてsalesforceを追加

③アプリクライアントにsalesforceのIDプロバイダーを紐付け

④salesforceのコールバックURLを更新


①Cognitoユーザプールの作成


  1. アプリケーションタイプ:モバイルアプリ

  2. アプリケーションに名前を付ける


Cognitoユーザープール作成

  1. サインイン識別子のオプション ・メールアドレスを選択


設定


  1. リターンURLを仮入力 ※後で変更します


上記の作成が完了するとユーザープールIDが発行されます。

後ほど必要になるので控えておきましょう!


②OIDCプロバイダーとしてsalesforceを追加


  1. ソーシャルプロバイダーと外部プロバイダーを開く

  2. アイデンティティプロバイダーを追加を選択

  3. タイプはOpenID Connect(OIDC)を選択してください ・プロバイダー名:salesforce ・クライアントID:salesforceコンシューマキー ・クライアントシークレット:salesforceコンシューマキー秘密 ・許可されたスコープ  ・openid  ・refresh_token  ・offline_access


    設定

    ・発行者URL:salesforceのMy DomainのURL ※My Domainはsalesforce設定→私のドメインから取得できます ・承認エンドポイント:{発行者URL}/services/oauth2/authorize

    ・トークンエンドポイント:{発行者URL}/services/oauth2/token

    ・UserInfoエンドポイント:{発行者URL}/services/oauth2/userinfo

    ・Jwks_uriエンドポイント:{発行者URL}/id/keys


設定

  1. 作成したSalesforceプロバイダーを選択 ・「属性マッピング」セクションを開き以下を設定


設定


③アプリクライアントにsalesforceのIDプロバイダーを紐付け


  1. 左メニューから「アプリケーションクライアント」を開く

  2. 作成済みのアプリクライアントを選択

  3. 「ログインページ」タブを開く

  4. 「IDプロバイダー」欄にSalesforceを追加

設定

  1. 許可されているコールバックURLに以下を追加 ・開発環境:npx expo start -cで表示されるREDIRECT_URI 例:exp://192.168.x.x:8081/--/redirect ・本番環境:{アプリのスキーム}://redirect 例:traineeapp://redirect


設定

④salesforceのコールバックURLを更新


  1. {CognitoドメインURL}/oauth2/idpresponseに変更する



  1. Salesforce側の設定

SSO認証を実装するにあたって、まずSalesforce側で「外部クライアントアプリケーション」の作成を行います。

以前までは「接続アプリケーション」を使って設定していたのですが、Spring'26リリース以降、新規の接続アプリケーション作成がデフォルトで無効化されています。

設定手順は以下の通りです。

①新規外部クライアントアプリケーションを作成

②OAuth設定の有効化

③コールバックURL, OAuth範囲の設定

④ポリシータブで許可するユーザとプロファイルを設定

⑤コンシューマー鍵と秘密を控えておく

①新規外部クライアントアプリケーションを作成

②OAuth設定の有効化

外部アプリケーションの設定

③コールバックURL, OAuth範囲の設定


  1. 仮で「https://example.com」と入力ください ※上記cognito

  2. OAuth範囲 ・APIを使用してユーザデータを管理(api) ・いつでも要求を実行(refresh_token) ・一意のユーザ識別子にアクセス(openid)


外部アプリケーションの設定

  1. フローの有効化・認証コードおよびログイン情報フローを有効化

  2. セキュリティ(有効にするもの)Web サーバーフローの秘密が必要更新トークンフローの秘密が必要

  3. チェックを外す項目PKCE拡張を要求

    ※ここで注意!PKCEはモバイルアプリのセキュリティ 強化に有効ですが、AWS CognitoがPKCEに対応して いないためチェックを入れると連携ができなくなります。


外部アプリケーションの設定

④ポリシータブで許可するユーザとプロファイルを設定


  1. 選択済みプロファイルに「システム管理者」を追加

  2. 許可されているユーザを「管理者が承認したユーザは事前承認済み」に変更


外部アプリケーションの設定

外部アプリケーションの設定

⑤コンシューマー鍵と秘密を控えておく

外部アプリケーションの設定


  1. 動作確認

実際に動作確認を行いました

①アプリを起動するとログイン画面が表示される

②「Salesforceでログイン」ボタンをタップするとSafariが起動する

③SalesforceのID/パスワードを入力してログイン

※今回はSalesforceアカウントでのログイン成功までを動作確認の範囲としています。


①アプリを起動するとログイン画面が表示される

②「Salesforceでログイン」ボタンをタップするとSafariが起動する


画像

③SalesforceのID/パスワードを入力してログイン

実際の画面

まとめ

今回は、salesforceとAWS Cognitoを使ったSSO認証の実装について紹介しました

SSOを活用することで、ユーザはsalesforceのアカウント一つで複数のサービスにアクセスできるようになり、利便性とセキュリティの両立が実現できます。

特に認証処理を一元管理できるCognitoを中間に挟む構成は、将来的な拡張にも対応しやすく、開発者にとっても扱いやすい設計です。

この記事が、皆さんのSalesforceを活用した認証基盤の構築に役立ち、開発をスムーズに進める一助となれば幸いです。

今後も役立つ情報をお届けしていきますので、引き続きよろしくお願いいたします!

このブログでは、Salesforceをもっと便利に使うためのお役立ち情報を発信しています。

記事に対する質問・相談に関しては、トップページの「お問い合わせ」よりご連絡ください。




コメント


bottom of page