Amazon Cognito ユーザープールでフェデレーションアイデンティティプロバイダーとして Google を設定するにはどうすればよいですか?

最終更新日: 2021 年 7 月 20 日

Google を Amazon Cognito ユーザープールのフェデレーティッド ID プロバイダー (IdP) として使用したいと考えています。設定する方法を教えてください。

解決方法

Amazon Cognito ユーザープールでは、Google や Facebook などのソーシャル IdP を含め、サードパーティー (フェデレーション) を介してサインインすることができます。詳細については、「ユーザープールへのソーシャル ID プロバイダーの追加」を参照してください。

アプリクライアントとドメイン名を使用して Amazon Cognito ユーザープールを作成する

  1. ユーザープールを作成します
    注意: 作成時には、標準属性として E メール がデフォルトで選択されます。詳細については、「ユーザープール属性の設定」を参照してください。
  2. ユーザープールでアプリクライアントを作成します。詳細については、「アプリケーションを追加してホストされたウェブの UI を有効にする」を参照してください。
  3. ユーザープールのドメイン名を追加します

Google API コンソールプロジェクトを作成する

まだ持っていない場合は、新しいプロジェクトを作成します。

  1. Google アカウントで Google API コンソールにサインインします。詳細については、Google ヘルプウェブサイトの「Manage APIs in the API console」(API コンソールで API を管理する) を参照してください。
  2. [Dashboard] (ダッシュボード) (API とサービス) で、[CREATE] (作成) を選択します。
  3. [New Project] (新しいプロジェクト) で、プロジェクト名 を入力します。
  4. [Location] (場所) には、[BROWSE] (参照) をクリックしてから、場所を選択します。
  5. [CREATE] (作成) を選択します。

詳細については、Google Sign-In for Websites ウェブサイトの「Google サインインを Web アプリに統合する」を参照してください。

  1. Google API コンソールの左側のナビゲーションペインで、[OAuth consent screen] (OAuth 同意画面) を選択します。
  2. 同意画面フォームに記入します。少なくとも、次のことを行ってください。
    アプリ名に名前を入力します。
    [Authorized domains] (承認済みドメイン) には、「amazoncognito.com」と入力します。
    重要: このドメインを入力する必要があります。入力しないと、後で OAuth クライアント ID を作成するときに Amazon Cognito ドメインを使用できなくなります。
  3. [Save] (保存して次へ) を選択します。[Credentials] (認証情報) ページにリダイレクトされます。

詳細については、Google Apps Script ウェブサイトの「Completing the OAuth consent screen」(OAuth 同意画面を完成させる) を参照してください。

OAuth 2.0 クライアントの認証情報を取得する

  1. Google API コンソールの [Credentials] (認証情報) ページで、[Create credentials] (認証情報の作成) を選択してから、[OAuth client ID] (OAuth クライアント ID) をクリックします。
  2. [Create OAuth client ID] (OAuth クライアント ID の作成) ページの [Application type] (アプリケーションの種類) で、[Web application] (ウェブアプリケーション) を選択します。
  3. 次に、以下を実行します。
    OAuth クライアント ID に、名前を入力します。
    [Authorized JavaScript origins] (承認済みの JavaScript 生成元) には、Amazon Cognito ドメイン (https://yourDomainPrefix.auth.region.amazoncognito.com) を入力します。
    注: yourDomainPrefixregion をユーザープールの値に置き換えます。これらの値は、ユーザープールの [Domain name] (ドメイン名) ページの Amazon Cognito コンソールで確認できます。
    [Authorized redirect URIs] (承認済みのリダイレクト URI) には、「https://yourDomainPrefix.auth.region.amazoncognito.com/oauth2/idpresponse」と入力します。
    注: yourDomainPrefixregion をユーザープールの値に置き換えます。詳細については、前の手順を参照してください。
  4. [OAuth client] (OAuth クライアント) ダイアログで、クライアント ID とクライアントシークレットを見つけてから、後で使用できるようにメモします。Amazon Cognito ユーザープールで Google を設定するときに、この情報が必要になります。

詳細については、Google Identity Platform ウェブサイトの「OAuth 2.0 を使用した Google API へのアクセス」を参照してください。

ユーザープールで Google を フェデレーティッド IdP として設定する

  1. Amazon Cognito コンソールで、[Manage user pools] (ユーザープールの管理) を選択し、次に自身のユーザープールを選択します。
  2. 左側のナビゲーションペインの フェデレーション で、[Identity providers] (ID プロバイダー) を選択します。
  3. [Google] を選択します。
  4. 次に、以下を実行します。
    [Google app ID] (Google アプリ ID) には、メモしたクライアント ID を貼り付けます。
    [App secret] (アプリシークレット) には、メモしたクライアントシークレットを貼り付けます。
    [Authorize scope] (承認スコープ) には、profile email openid を入力します。
  5. [Enable Google] (Google を有効化) を選択します。

詳細については、「ユーザープールへのソーシャル IDP の追加する」を参照してください。

E メールを Google 属性からユーザープール属性へマッピングする

注: 属性マッピングでは、マップされたユーザープール属性は変更可能である必要があります。詳細については、「ユーザープールの ID プロバイダー属性マッピングを指定する」を参照してください。

  1. Amazon Cognito コンソールで、[Manage user pools] (ユーザープールの管理) を選択し、次に自身のユーザープールを選択します。
  2. 左側のナビゲーションペインの フェデレーション で、[Attribute mapping] (属性マッピング) を選択します。
  3. 属性マッピングページで、[Google] タブを選択します。
  4. email という名前の [Google attribute] (Google 属性) の横にある [Capture] (キャプチャ) のチェックボックスをオンにします。
  5. email の横にある [User pool attribute] (ユーザープール属性) で、リストから [Email] (E メール) を選択します。
  6. [Save changes] (変更の保存) を選択します。

ユーザープールのアプリクライアント設定を変更する

注: アプリクライアントの設定では、マップされたユーザープールの属性は書き込み可能である必要があります。詳細については、「ユーザープールの ID プロバイダー属性マッピングを指定する」を参照してください。

  1. Amazon Cognito コンソールで、[Manage user pools] (ユーザープールの管理) を選択し、次に自身のユーザープールを選択します。
  2. 左ナビゲーションペインで、[App integration] (アプリの統合) の [App client settings] (アプリクライアントの設定) を選択します。
  3. アプリクライアントページで、次の手順を実行します。
    [Enabled Identity Providers] (有効な ID プロバイダ) で、[Google] チェックボックスをオンにします。
    [Callback URL(s)] (コールバック URL) には、ログイン後にユーザーをリダイレクトする URL を入力します。テストについては、https://www.example.com などの任意の有効な URL を入力できます。
    [Sign out URL(s)] (サインアウト URL) には、ログアウト後にユーザーをリダイレクトする URL を入力します。テストについては、https://www.example.com などの任意の有効な URL を入力できます。
    [Allowed OAuth Flows] (許可されている OAuth フロー) で、必ず [Implicit grant] (暗黙的な付与 ) チェックボックスをオンにします。
    [Allowed OAuth Scopes] (許可されている OAuth スコープ) で、[email] (E メール )、[openid]、および [profile] (プロファイル) のチェックボックスをオンにします。
    重要: 暗黙的な付与の OAuth フローはテストのみを目的としています。運用システムには認証コード付与を使用するのがベストプラクティスです。詳細については、「Understanding Amazon Cognito user pool OAuth 2.0 grants」(Amazon Cognito ユーザープール OAuth 2.0 の付与について) を参照してください。
  4. [Save changes] (変更の保存) を選択します。

詳細については、「アプリクライアントの設定の概要」を参照してください。

エンドポイント URL を構築する

ユーザープールの値を使用して、Amazon Cognito がホストするウェブ UI の次のログインエンドポイント URL を作成します。

https://yourDomainPrefix.auth.region.amazoncognito.com/login?response_type=token&client_id=yourClientId&redirect_uri=redirectUrl

次のことを必ず行ってください。

  • yourDomainPrefixregionをユーザープールの値に置き換えます。これらの値は、ユーザープールの [Domain name] (ドメイン名) ページの Amazon Cognito コンソールで確認できます。
  • yourClientId を Amazon Cognito アプリクライアントの ID に置き換え、redirectUrl をアプリクライアントのコールバック URL に置き換えます。これらは Amazon Cognito コンソールにある、ユーザープールの[App client settings] (アプリクライアントの設定) ページで確認できます。

詳細については、「Amazon Cognito のホストされたウェブの UI を設定する方法を教えてください。」および 「ログインエンドポイント」を参照してください。

エンドポイント URL をテストする

  1. 作成したログインエンドポイント URL をウェブブラウザに入力します。
  2. ログインエンドポイントのウェブページで、[Continue with Google] (Google で続行) を選択します。
    注: Amazon Cognito アプリクライアントのコールバック URL にリダイレクトされた場合は、ブラウザで既に Google アカウントにログインしています。ユーザープールのトークンは、ウェブブラウザのアドレスバーの URL に表示されます。
  3. Google でログイン で、Google アカウントを選択してログインします。

認証に成功すると、Amazon Cognito アプリクライアントのコールバック URL にリダイレクトされます。ユーザープールが発行した JSON ウェブトークン (JWT) は、ウェブブラウザのアドレスバーの URL に表示されます。

注: 実際のウェブアプリでは、LOGIN エンドポイントの URL は JavaScript SDK によって生成され、JavaScript SDK は URL 内の JWT トークンの解析も処理します。


この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?