ID プール IdP としての Google のセットアップ - Amazon Cognito

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ID プール IdP としての Google のセットアップ

Amazon Cognito は Google と統合して、モバイルアプリケーションユーザーにフェデレーションされた認証を提供します。このセクションでは、ID プロバイダーとして Google に対してアプリケーションを登録し、セットアップする方法について説明します。

Android

注記

アプリが Google を使用していて、複数のモバイルプラットフォームで利用可能になる場合は、OpenID Connect プロバイダーとして設定する必要があります。作成されたすべてのクライアント ID を追加オーディエンス値として追加することで、統合が向上します。Google のクライアント間の ID モデルの詳細については、「クライアント間の ID」を参照してください。

Google のセットアップ

Android 用 Google サインインを有効化するには、アプリケーション用の Google デベロッパーコンソールプロジェクトを作成する必要があります。

  1. Google 開発者コンソールに移動して、新しいプロジェクトを作成します。

  2. [APIs & Services] (API とサービス) を選択し、次に [OAuth consent screen] (OAuth 同意画面) を選択します。Google がプロフィールデータをアプリと共有するための同意を求められたときに、Google がユーザーに表示する情報をカスタマイズします。

  3. [Credentials] (認証情報) を選択し、次に[Create credentials] (認証情報の作成) を選択します。[OAuth client ID] (OAuth クライアント ID) を選択します。アプリケーションタイプとして [Android] を選択します。アプリを開発するプラットフォームごとに個別のクライアント ID を作成します。

  4. [Credentials] (認証情報) で、[Manage service accounts] (サービスアカウントの管理) を選択します。[Create service account] (サービスアカウントの作成) を選択します。サービスアカウントの詳細を入力し、[Create and continue] (作成して続ける) を選択します。

  5. サービスアカウントにプロジェクトへのアクセス権を付与します。アプリが必要とするサービスアカウントへのアクセス権をユーザーに付与します。

  6. 新しいサービスアカウントを選択し、[Keys] (キー)、および [Add key] (キーを追加する) を選択します。新しい JSON キーを作成してダウンロードします。

Google デベロッパーコンソールの使用方法の詳細については、Google Cloud ドキュメントの「プロジェクトの作成と管理」を参照してください。

Android アプリへの Google の統合に関する詳細については、Google ID ドキュメントの「Android 用 Google サインイン」を参照してください。

Google ID プロバイダー (IdP) を追加するには
  1. Amazon Cognito コンソール[ID プールの管理] をクリックします。アイデンティティプールを選択します。

  2. [ユーザーアクセス] タブを選択します。

  3. [ID プロバイダーを追加] を選択します。

  4. [Google] を選択します。

  5. Google Cloud プラットフォームで作成した OAuth プロジェクトのクライアント ID を入力します。詳細については、Google Cloud Platform コンソールヘルプの「OAuth 2.0 の設定」を参照してください。

  6. Amazon Cognito がこのプロバイダーで認証されたユーザーに認証情報を発行するときにリクエストするロールを設定するには、[ロール設定] を設定します。

    1. その IdP のユーザーに、認証済みロールを設定したときに設定したデフォルトロールを割り当てることも、ルール付きのロールを選択することもできます。

      1. [ルールを使用してロールを選択する] を選択した場合、ユーザー認証からのソースクレーム、クレームを比較するオペレータ、このロール選択と一致するおよびロール割り当てが一致したときに割り当てるロールを入力します。別の条件に基づいて追加のルールを作成するには、[別のものを追加] を選択します。

      2. [ロールの解決] を選択します。ユーザーのクレームがルールに合わない場合は、認証情報を拒否するか、認証済みロールの認証情報を発行できます。

  7. Amazon Cognito がこのプロバイダーで認証されたユーザーに認証情報を発行するときに割り当てるプリンシパルタグを変更するには、[アクセスコントロールの属性] を設定します。

    1. プリンシパルタグを適用しない場合は、[非アクティブ] を選択します。

    2. sub および aud クレームに基づいてプリンシパルタグを適用するには、[デフォルトマッピングを使用] を選択します。

    3. プリンシパルタグへの属性の独自のカスタムスキーマを作成するには、[カスタムマッピングを使用] を選択します。次に、タグに表示したい各クレームから取得するタグキーを入力します。

  8. [変更を保存] を選択します。

Google の使用

アプリケーションで Google を使用したログインを有効にするには、Android に関する Google のドキュメントに従います。ユーザーがサインインすると、Google に OpenID Connect 認証トークンを要求します。Amazon Cognito はこのトークンを使用してユーザーを認証し、一意の ID を生成します。

次のサンプルコードは、Google Play サービスから認証トークンを取得する方法を示しています。

GooglePlayServicesUtil.isGooglePlayServicesAvailable(getApplicationContext()); AccountManager am = AccountManager.get(this); Account[] accounts = am.getAccountsByType(GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE); String token = GoogleAuthUtil.getToken(getApplicationContext(), accounts[0].name, "audience:server:client_id:YOUR_GOOGLE_CLIENT_ID"); Map<String, String> logins = new HashMap<String, String>(); logins.put("accounts.google.com", token); credentialsProvider.setLogins(logins);

iOS - Objective-C

注記

アプリが Google を使用していて、複数のモバイルプラットフォームで利用可能になる場合は、Google を OpenID Connect プロバイダーとします。作成されたすべてのクライアント ID を追加オーディエンス値として追加することで、統合が向上します。Google のクライアント間の ID モデルの詳細については、「クライアント間の ID」を参照してください。

Google のセットアップ

iOS 用 Google サインインを有効にするには、アプリケーション用の Google デベロッパーコンソールプロジェクトを作成します。

  1. Google 開発者コンソールに移動して、新しいプロジェクトを作成します。

  2. [APIs & Services] (API とサービス) を選択し、次に [OAuth consent screen] (OAuth 同意画面) を選択します。Google がプロフィールデータをアプリと共有するための同意を求められたときに、Google がユーザーに表示する情報をカスタマイズします。

  3. [Credentials] (認証情報) を選択し、次に[Create credentials] (認証情報の作成) を選択します。[OAuth client ID] (OAuth クライアント ID) を選択します。アプリケーションタイプとして [iOS] を選択します。アプリを開発するプラットフォームごとに個別のクライアント ID を作成します。

  4. [Credentials] (認証情報) で、[Manage service accounts] (サービスアカウントの管理) を選択します。[Create service account] (サービスアカウントの作成) を選択します。サービスアカウントの詳細を入力し、[Create and continue] (作成して続ける) を選択します。

  5. サービスアカウントにプロジェクトへのアクセス権を付与します。アプリが必要とするサービスアカウントへのアクセス権をユーザーに付与します。

  6. 新しいサービスアカウントを選択します。[Keys] (キー) タブを選択し、[Add key] (キーを追加する) を選択します。新しい JSON キーを作成してダウンロードします。

Google デベロッパーコンソールの使用方法の詳細については、Google Cloud ドキュメントの「プロジェクトの作成と管理」を参照してください。

iOS アプリへの Google の統合に関する詳細については、Google ID に関するドキュメントの「iOS 用 Google サインイン」を参照してください。

Google ID プロバイダー (IdP) を追加するには
  1. Amazon Cognito コンソール[ID プールの管理] をクリックします。アイデンティティプールを選択します。

  2. [ユーザーアクセス] タブを選択します。

  3. [ID プロバイダーを追加] を選択します。

  4. [Google] を選択します。

  5. Google Cloud プラットフォームで作成した OAuth プロジェクトのクライアント ID を入力します。詳細については、Google Cloud Platform コンソールヘルプの「OAuth 2.0 の設定」を参照してください。

  6. Amazon Cognito がこのプロバイダーで認証されたユーザーに認証情報を発行するときにリクエストするロールを設定するには、[ロール設定] を設定します。

    1. その IdP のユーザーに、認証済みロールを設定したときに設定したデフォルトロールを割り当てることも、ルール付きのロールを選択することもできます。

      1. [ルールを使用してロールを選択する] を選択した場合、ユーザー認証からのソースクレーム、クレームを比較するオペレータ、このロール選択と一致するおよびロール割り当てが一致したときに割り当てるロールを入力します。別の条件に基づいて追加のルールを作成するには、[別のものを追加] を選択します。

      2. [ロールの解決] を選択します。ユーザーのクレームがルールに合わない場合は、認証情報を拒否するか、認証済みロールの認証情報を発行できます。

  7. Amazon Cognito がこのプロバイダーで認証されたユーザーに認証情報を発行するときに割り当てるプリンシパルタグを変更するには、[アクセスコントロールの属性] を設定します。

    1. プリンシパルタグを適用しない場合は、[非アクティブ] を選択します。

    2. sub および aud クレームに基づいてプリンシパルタグを適用するには、[デフォルトマッピングを使用] を選択します。

    3. プリンシパルタグへの属性の独自のカスタムスキーマを作成するには、[カスタムマッピングを使用] を選択します。次に、タグに表示したい各クレームから取得するタグキーを入力します。

  8. [変更を保存] を選択します。

Google の使用

アプリケーションで Google を使用したログインを有効にするには、iOS に関する Google のドキュメントに従います。認証に成功すると、OpenID Connect 認証トークンが取得されます。Amazon Cognito はこのトークンを使用してユーザーを認証し、固有識別子を生成します。

認証に成功すると、id_token が含まれる GTMOAuth2Authentication オブジェクトが取得されます。Amazon Cognito はこのオブジェクトを使用してユーザーを認証し、固有識別子を生成します。

- (void)finishedWithAuth: (GTMOAuth2Authentication *)auth error: (NSError *) error { NSString *idToken = [auth.parameters objectForKey:@"id_token"]; credentialsProvider.logins = @{ @(AWSCognitoLoginProviderKeyGoogle): idToken }; }

iOS - Swift

注記

アプリが Google を使用していて、複数のモバイルプラットフォームで利用可能になる場合は、Google を OpenID Connect プロバイダーとします。作成されたすべてのクライアント ID を追加オーディエンス値として追加することで、統合が向上します。Google のクライアント間の ID モデルの詳細については、「クライアント間の ID」を参照してください。

Google のセットアップ

iOS 用 Google サインインを有効にするには、アプリケーション用の Google デベロッパーコンソールプロジェクトを作成します。

  1. Google 開発者コンソールに移動して、新しいプロジェクトを作成します。

  2. [APIs & Services] (API とサービス) を選択し、次に [OAuth consent screen] (OAuth 同意画面) を選択します。Google がプロフィールデータをアプリと共有するための同意を求められたときに、Google がユーザーに表示する情報をカスタマイズします。

  3. [Credentials] (認証情報) を選択し、次に[Create credentials] (認証情報の作成) を選択します。[OAuth client ID] (OAuth クライアント ID) を選択します。アプリケーションタイプとして [iOS] を選択します。アプリを開発するプラットフォームごとに個別のクライアント ID を作成します。

  4. [Credentials] (認証情報) で、[Manage service accounts] (サービスアカウントの管理) を選択します。[Create service account] (サービスアカウントの作成) を選択します。サービスアカウントの詳細を入力し、[Create and continue] (作成して続ける) を選択します。

  5. サービスアカウントにプロジェクトへのアクセス権を付与します。アプリが必要とするサービスアカウントへのアクセス権をユーザーに付与します。

  6. 新しいサービスアカウントを選択し、[Keys] (キー)、および [Add key] (キーを追加する) を選択します。新しい JSON キーを作成してダウンロードします。

Google デベロッパーコンソールの使用方法の詳細については、Google Cloud ドキュメントの「プロジェクトの作成と管理」を参照してください。

iOS アプリへの Google の統合に関する詳細については、Google ID に関するドキュメントの「iOS 用 Google サインイン」を参照してください。

Amazon Cognito コンソールのホームページ[Manage Identity Pools] (ID プールの管理) をクリックします。

Amazon Cognito コンソールで外部プロバイダーを設定する
  1. 外部プロバイダーとして Google を有効にする ID プールの名前を選択します。アイデンティティプールの [Dashboard] (ダッシュボード) ページが表示されます。

  2. [ダッシュボード] ページの右上にある、[ID プールの編集] を選択します。[Edit identity pool] (ID プールの編集) ページが表示されます。

  3. 下にスクロールし、[Authentication providers] (認証プロバイダー) を選択してセクションを展開します。

  4. [Google] タブを選択します。

  5. [ロック解除] を選択します。

  6. Google から入手した Google Client ID を入力し、[Save Changes] (変更の保存) を選択します。

Google の使用

アプリケーションで Google を使用したログインを有効にするには、iOS に関する Google のドキュメントに従います。認証に成功すると、OpenID Connect 認証トークンが取得されます。Amazon Cognito はこのトークンを使用してユーザーを認証し、一意の識別子を生成します。

認証が成功すると、id_token を含む GTMOAuth2Authentication オブジェクトが生成されます。Amazon Cognito はこのトークンを使用してユーザーを認証し、一意の ID を生成します。

func finishedWithAuth(auth: GTMOAuth2Authentication!, error: NSError!) { if error != nil { print(error.localizedDescription) } else { let idToken = auth.parameters.objectForKey("id_token") credentialsProvider.logins = [AWSCognitoLoginProviderKey.Google.rawValue: idToken!] } }

JavaScript

注記

アプリが Google を使用していて、複数のモバイルプラットフォームで利用可能になる場合は、Google を OpenID Connect プロバイダーとして設定する必要があります。作成されたすべてのクライアント ID を追加オーディエンス値として追加することで、統合が向上します。Google のクライアント間の ID モデルの詳細については、「クライアント間の ID」を参照してください。

Google のセットアップ

JavaScript ウェブアプリの Google サインインを有効にするには、アプリケーション用の Google Developers コンソールプロジェクトを作成します。

  1. Google 開発者コンソールに移動して、新しいプロジェクトを作成します。

  2. [APIs & Services] (API とサービス) を選択し、次に [OAuth consent screen] (OAuth 同意画面) を選択します。Google がプロフィールデータをアプリと共有するための同意を求められたときに、Google がユーザーに表示する情報をカスタマイズします。

  3. [Credentials] (認証情報) を選択し、次に[Create credentials] (認証情報の作成) を選択します。[OAuth client ID] (OAuth クライアント ID) を選択します。アプリケーションタイプとして [Web application] (ウェブアプリケーション) を選択します。アプリを開発するプラットフォームごとに個別のクライアント ID を作成します。

  4. [Credentials] (認証情報) で、[Manage service accounts] (サービスアカウントの管理) を選択します。[Create service account] (サービスアカウントの作成) を選択します。サービスアカウントの詳細を入力し、[Create and continue] (作成して続ける) を選択します。

  5. サービスアカウントにプロジェクトへのアクセス権を付与します。アプリが必要とするサービスアカウントへのアクセス権をユーザーに付与します。

  6. 新しいサービスアカウントを選択し、[Keys] (キー)、および [Add key] (キーを追加する) を選択します。新しい JSON キーを作成してダウンロードします。

Google デベロッパーコンソールの使用方法の詳細については、Google Cloud ドキュメントの「プロジェクトの作成と管理」を参照してください。

Google をウェブアプリに統合する方法の詳細については、Google ID に関するドキュメントの「Google でサインインする」を参照してください。

Amazon Cognito コンソールで外部プロバイダーを設定する

Google ID プロバイダー (IdP) を追加するには
  1. Amazon Cognito コンソール[ID プールの管理] をクリックします。アイデンティティプールを選択します。

  2. [ユーザーアクセス] タブを選択します。

  3. [ID プロバイダーを追加] を選択します。

  4. [Google] を選択します。

  5. Google Cloud プラットフォームで作成した OAuth プロジェクトのクライアント ID を入力します。詳細については、Google Cloud Platform コンソールヘルプの「OAuth 2.0 の設定」を参照してください。

  6. Amazon Cognito がこのプロバイダーで認証されたユーザーに認証情報を発行するときにリクエストするロールを設定するには、[ロール設定] を設定します。

    1. その IdP のユーザーに、認証済みロールを設定したときに設定したデフォルトロールを割り当てることも、ルール付きのロールを選択することもできます。

      1. [ルールを使用してロールを選択する] を選択した場合、ユーザー認証からのソースクレーム、クレームを比較するオペレータ、このロール選択と一致するおよびロール割り当てが一致したときに割り当てるロールを入力します。別の条件に基づいて追加のルールを作成するには、[別のものを追加] を選択します。

      2. [ロールの解決] を選択します。ユーザーのクレームがルールに合わない場合は、認証情報を拒否するか、認証済みロールの認証情報を発行できます。

  7. Amazon Cognito がこのプロバイダーで認証されたユーザーに認証情報を発行するときに割り当てるプリンシパルタグを変更するには、[アクセスコントロールの属性] を設定します。

    1. プリンシパルタグを適用しない場合は、[非アクティブ] を選択します。

    2. sub および aud クレームに基づいてプリンシパルタグを適用するには、[デフォルトマッピングを使用] を選択します。

    3. プリンシパルタグへの属性の独自のカスタムスキーマを作成するには、[カスタムマッピングを使用] を選択します。次に、タグに表示したい各クレームから取得するタグキーを入力します。

  8. [変更を保存] を選択します。

Google の使用

アプリケーションで Google を使用したログインを有効にするには、「ウェブに関する Google のドキュメント」に従います。

認証に成功すると、id_token が含まれるレスポンスオブジェクトが取得されます。Amazon Cognito はこのオブジェクトを使用してユーザーを認証し、固有識別子を生成します。

function signinCallback(authResult) { if (authResult['status']['signed_in']) { // Add the Google access token to the Amazon Cognito credentials login map. AWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'IDENTITY_POOL_ID', Logins: { 'accounts.google.com': authResult['id_token'] } }); // Obtain AWS credentials AWS.config.credentials.get(function(){ // Access AWS resources here. }); } }

Unity

Google のセットアップ

Unity アプリ用 Google サインインを有効にするには、アプリケーション用の Google デベロッパーコンソールプロジェクトを作成します。

  1. Google 開発者コンソールに移動して、新しいプロジェクトを作成します。

  2. [APIs & Services] (API とサービス) を選択し、次に [OAuth consent screen] (OAuth 同意画面) を選択します。Google がプロフィールデータをアプリと共有するための同意を求められたときに、Google がユーザーに表示する情報をカスタマイズします。

  3. [Credentials] (認証情報) を選択し、次に[Create credentials] (認証情報の作成) を選択します。[OAuth client ID] (OAuth クライアント ID) を選択します。アプリケーションタイプとして [Web application] (ウェブアプリケーション) を選択します。アプリを開発するプラットフォームごとに個別のクライアント ID を作成します。

  4. Unity の場合は、Android 用に追加の OAuth クライアント ID を作成し、iOS 用には別の OAuth クライアント ID を作成します。

  5. [Credentials] (認証情報) で、[Manage service accounts] (サービスアカウントの管理) を選択します。[Create service account] (サービスアカウントの作成) を選択します。サービスアカウントの詳細を入力し、[Create and continue] (作成して続ける) を選択します。

  6. サービスアカウントにプロジェクトへのアクセス権を付与します。アプリが必要とするサービスアカウントへのアクセス権をユーザーに付与します。

  7. 新しいサービスアカウントを選択し、[Keys] (キー)、および [Add key] (キーを追加する) を選択します。新しい JSON キーを作成してダウンロードします。

Google デベロッパーコンソールの使用方法の詳細については、Google Cloud ドキュメントの「プロジェクトの作成と管理」を参照してください。

IAM コンソールでの OpenID プロバイダーの作成

  1. IAM コンソールでの OpenID プロバイダーの作成 OpenID プロバイダーをセットアップする方法の詳細については、「OpenID Connect ID プロバイダーの使用」を参照してください。

  2. プロバイダー URL の入力を求められたら、「"https://accounts.google.com"」と入力します。

  3. [Audience (対象者)] フィールドに値を入力するよう求められたら、前のステップで作成した 3 つのクライアント ID のいずれかを入力します。

  4. プロバイダー名を選択し、2 名の対象ユーザーを追加して、他の 2 つのクライアント ID を追加します。

Amazon Cognito コンソールで外部プロバイダーを設定する

Amazon Cognito コンソールのホームページ[Manage Identity Pools] (ID プールの管理) をクリックします。

Google ID プロバイダー (IdP) を追加するには
  1. Amazon Cognito コンソール[ID プールの管理] をクリックします。アイデンティティプールを選択します。

  2. [ユーザーアクセス] タブを選択します。

  3. [ID プロバイダーを追加] を選択します。

  4. [Google] を選択します。

  5. Google Cloud プラットフォームで作成した OAuth プロジェクトのクライアント ID を入力します。詳細については、Google Cloud Platform コンソールヘルプの「OAuth 2.0 の設定」を参照してください。

  6. Amazon Cognito がこのプロバイダーで認証されたユーザーに認証情報を発行するときにリクエストするロールを設定するには、[ロール設定] を設定します。

    1. その IdP のユーザーに、認証済みロールを設定したときに設定したデフォルトロールを割り当てることも、ルール付きのロールを選択することもできます。

      1. [ルールを使用してロールを選択する] を選択した場合、ユーザー認証からのソースクレーム、クレームを比較するオペレータ、このロール選択と一致するおよびロール割り当てが一致したときに割り当てるロールを入力します。別の条件に基づいて追加のルールを作成するには、[別のものを追加] を選択します。

      2. [ロールの解決] を選択します。ユーザーのクレームがルールに合わない場合は、認証情報を拒否するか、認証済みロールの認証情報を発行できます。

  7. Amazon Cognito がこのプロバイダーで認証されたユーザーに認証情報を発行するときに割り当てるプリンシパルタグを変更するには、[アクセスコントロールの属性] を設定します。

    1. プリンシパルタグを適用しない場合は、[非アクティブ] を選択します。

    2. sub および aud クレームに基づいてプリンシパルタグを適用するには、[デフォルトマッピングを使用] を選択します。

    3. プリンシパルタグへの属性の独自のカスタムスキーマを作成するには、[カスタムマッピングを使用] を選択します。次に、タグに表示したい各クレームから取得するタグキーを入力します。

  8. [変更を保存] を選択します。

Unity Google プラグインのインストール

  1. Unity プロジェクトに、Google Play Games plugin for Unity を追加します。

  2. Unity で、[Windows] メニューから Android と iOS プラットフォーム用の 3 つの ID を使用してプラグインを設定します。

Google の使用

次のサンプルコードは、Google Play サービスから認証トークンを取得する方法を示しています。

void Start() { PlayGamesClientConfiguration config = new PlayGamesClientConfiguration.Builder().Build(); PlayGamesPlatform.InitializeInstance(config); PlayGamesPlatform.DebugLogEnabled = true; PlayGamesPlatform.Activate(); Social.localUser.Authenticate(GoogleLoginCallback); } void GoogleLoginCallback(bool success) { if (success) { string token = PlayGamesPlatform.Instance.GetIdToken(); credentials.AddLogin("accounts.google.com", token); } else { Debug.LogError("Google login failed. If you are not running in an actual Android/iOS device, this is expected."); } }

Xamarin

注記

Amazon Cognito は、Xamarin プラットフォームで Google をネイティブにサポートしていません。現在、この統合では、ウェブビューを使用してブラウザのサインインの流れに従う必要があります。他の SDK での Google の統合の詳細については、他のプラットフォームを選択してください。

アプリケーションで Google を使用したログインを有効にするには、ユーザーを認証し、ユーザーから OpenID Connect トークンを取得します。Amazon Cognito は、Amazon Cognito アイデンティティに関連付けられた一意のユーザー識別子を生成するためにこのトークンを使用します。残念ながら、Xamarin 用の Google SDK では OpenID Connect トークンを取得することができないため、代替クライアントまたはウェブビューのウェブフローを使用します。

トークンを取得したら、CognitoAWSCredentials で設定できます。

credentials.AddLogin("accounts.google.com", token);
注記

アプリが Google を使用していて、複数のモバイルプラットフォームで利用可能になる場合は、Google を OpenID Connect プロバイダーとして設定する必要があります。作成されたすべてのクライアント ID を追加オーディエンス値として追加することで、統合が向上します。Google のクライアント間の ID モデルの詳細については、「クライアント間の ID」を参照してください。