Salesforce × AWS CognitoでSSO認証を構築してみた
- 遥斗 錦
- 4 時間前
- 読了時間: 6分

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

SSO(Single Sign-On)認証とは、ユーザーが一度の認証で、複数のサービスへ再ログインなしでアクセスできる仕組みです。
「サービスごとにIDとパスワードを入力するの面倒だな...」と感じたことはありませんか?
そのストレスを解消してくれるのがSSOです。
例えば会社のPCに一度ログインするだけで、複数のサービスがログイン済みで利用できるあの仕組みです。
SSOの主なメリット
サービスごとにIDとパスワードを入力する必要がない
パスワード管理を一元化できる
セキュリティの強化
特に3つ目のセキュリティ強化は、開発者目線でも重要なポイントだと感じています。
認証というリスクの高い処理を一元管理できるのは非常に心強いです。
今回はSalesforceを認証元(IdP)として、ユーザーがSalesforceのログイン画面で認証し、その結果をCognitoが仲介してモバイルアプリへ戻す構成でSSOを実装します。モバイルアプリ側でSalesforceのパスワードを保持・検証するのではなく、リダイレクトによる認証フローでログインを成立させるのがポイントです。
今回構築した構成

データの流れとしては以下の通りです。
①ログイン:モバイルアプリで「ログイン」を押すと、AWS Cognitoへ遷移します
②認証連携:CognitoがSalesforceのログイン画面へリダイレクトし、ユーザーの本人確認を委譲します
③認証:ユーザーがSalesforceのID/パスワードを入力して認証します
④トークン返却:認証成功後、CognitoがSalesforceから認証結果を受け取り、モバイルアプリにトークンを返します
⑤ログイン完了:モバイルアプリは受け取ったトークンを使ってログイン状態を確立します
今回の実装では、Cognitoを中間に挟む構成にしました。
直接SalesforceとモバイルアプリをつなぐことはできますがCognitoを中間に挟むことで、モバイルアプリ側でSalesforce特有の認証処理を意識せずに実装できるというメリットがあります。
また将来的に「GoogleログインやLINEログイン」などを追加したくなった際も、Cognito側の設定のみで認証手段を拡張することができるというメリットがあります!
AWS Cognito側の設定
salesforceとモバイルアプリをつなぐためのCognito設定を行っていきます。
※AWSアカウントはある前提で進めます
設定手順は以下の通りです。
①Cognitoユーザプールの作成
②OIDCプロバイダーとしてsalesforceを追加
③アプリクライアントにsalesforceのIDプロバイダーを紐付け
④salesforceのコールバックURLを更新
①Cognitoユーザプールの作成
アプリケーションタイプ:モバイルアプリ
アプリケーションに名前を付ける

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

リターンURLを仮入力 ※後で変更します
上記の作成が完了するとユーザープールIDが発行されます。
後ほど必要になるので控えておきましょう!
②OIDCプロバイダーとしてsalesforceを追加
ソーシャルプロバイダーと外部プロバイダーを開く
アイデンティティプロバイダーを追加を選択
タイプは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

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

③アプリクライアントにsalesforceのIDプロバイダーを紐付け
左メニューから「アプリケーションクライアント」を開く
作成済みのアプリクライアントを選択
「ログインページ」タブを開く
「IDプロバイダー」欄にSalesforceを追加

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

④salesforceのコールバックURLを更新
{CognitoドメインURL}/oauth2/idpresponseに変更する
Salesforce側の設定
SSO認証を実装するにあたって、まずSalesforce側で「外部クライアントアプリケーション」の作成を行います。
以前までは「接続アプリケーション」を使って設定していたのですが、Spring'26リリース以降、新規の接続アプリケーション作成がデフォルトで無効化されています。
設定手順は以下の通りです。
①新規外部クライアントアプリケーションを作成
②OAuth設定の有効化
③コールバックURL, OAuth範囲の設定
④ポリシータブで許可するユーザとプロファイルを設定
⑤コンシューマー鍵と秘密を控えておく
①新規外部クライアントアプリケーションを作成
②OAuth設定の有効化

③コールバックURL, OAuth範囲の設定
仮で「https://example.com」と入力ください ※上記cognito
OAuth範囲 ・APIを使用してユーザデータを管理(api) ・いつでも要求を実行(refresh_token) ・一意のユーザ識別子にアクセス(openid)

フローの有効化・認証コードおよびログイン情報フローを有効化
セキュリティ(有効にするもの)・Web サーバーフローの秘密が必要・更新トークンフローの秘密が必要
チェックを外す項目・PKCE拡張を要求
※ここで注意!PKCEはモバイルアプリのセキュリティ 強化に有効ですが、AWS CognitoがPKCEに対応して いないためチェックを入れると連携ができなくなります。

④ポリシータブで許可するユーザとプロファイルを設定
選択済みプロファイルに「システム管理者」を追加
許可されているユーザを「管理者が承認したユーザは事前承認済み」に変更


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

動作確認
実際に動作確認を行いました
①アプリを起動するとログイン画面が表示される
②「Salesforceでログイン」ボタンをタップするとSafariが起動する
③SalesforceのID/パスワードを入力してログイン
※今回はSalesforceアカウントでのログイン成功までを動作確認の範囲としています。
①アプリを起動するとログイン画面が表示される
②「Salesforceでログイン」ボタンをタップするとSafariが起動する

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

まとめ
今回は、salesforceとAWS Cognitoを使ったSSO認証の実装について紹介しました
SSOを活用することで、ユーザはsalesforceのアカウント一つで複数のサービスにアクセスできるようになり、利便性とセキュリティの両立が実現できます。
特に認証処理を一元管理できるCognitoを中間に挟む構成は、将来的な拡張にも対応しやすく、開発者にとっても扱いやすい設計です。
この記事が、皆さんのSalesforceを活用した認証基盤の構築に役立ち、開発をスムーズに進める一助となれば幸いです。
今後も役立つ情報をお届けしていきますので、引き続きよろしくお願いいたします!
このブログでは、Salesforceをもっと便利に使うためのお役立ち情報を発信しています。
記事に対する質問・相談に関しては、トップページの「お問い合わせ」よりご連絡ください。



コメント