

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

# アイデンティティプール IdP として Google を設定する
<a name="google"></a>

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

## Android
<a name="set-up-google-1.android"></a>

**注記**  
アプリが Google を使用していて、複数のモバイルプラットフォームで利用可能になる場合は、[OpenID Connect プロバイダー](open-id.md)として設定する必要があります。作成されたすべてのクライアント ID を追加オーディエンス値として追加することで、統合が向上します。Google のクライアント間の ID モデルの詳細については、「[クライアント間の ID](https://developers.google.com/accounts/docs/CrossClientAuth)」を参照してください。

**Google のセットアップ**

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

1. [Google 開発者コンソール](https://console.developers.google.com/)に移動して、新しいプロジェクトを作成します。

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

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

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

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

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

Google デベロッパーコンソールの使用方法の詳細については、Google Cloud ドキュメントの「[プロジェクトの作成と管理](https://cloud.google.com/resource-manager/docs/creating-managing-projects)」を参照してください。

Google を Android アプリケーションに統合する方法の詳細については、Google ID に関するドキュメントの「[「Google でログイン」でユーザーを認証する](https://developer.android.com/identity/sign-in/credential-manager-siwg)」を参照してください。

**Google ID プロバイダー (IdP) を追加するには**

1. [Amazon Cognito コンソール](https://console.aws.amazon.com/cognito/home)で **[ID プールの管理]** をクリックします。アイデンティティプールを選択します。

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

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

1. [**Google**] を選択します。

1. [Google Cloud プラットフォーム](https://console.cloud.google.com/)で作成した OAuth プロジェクトの**クライアント ID** を入力します。詳細については、*Google Cloud Platform コンソールヘルプ*の「[OAuth 2.0 の設定](https://support.google.com/cloud/answer/6158849)」を参照してください。

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

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

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

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

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

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

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

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

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

**Google の使用**

アプリケーションで Google を使用したログインを有効にするには、[Android に関する Google のドキュメント](https://developers.google.com/identity/sign-in/android/start)に従います。ユーザーがサインインすると、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
<a name="set-up-google-1.ios-objc"></a>

**注記**  
アプリが Google を使用していて、複数のモバイルプラットフォームで利用可能になる場合は、Google を [OpenID Connect プロバイダー](open-id.md)とします。作成されたすべてのクライアント ID を追加オーディエンス値として追加することで、統合が向上します。Google のクライアント間の ID モデルの詳細については、「[クライアント間の ID](https://developers.google.com/accounts/docs/CrossClientAuth)」を参照してください。

**Google のセットアップ**

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

1. [Google 開発者コンソール](https://console.developers.google.com/)に移動して、新しいプロジェクトを作成します。

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

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

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

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

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

Google デベロッパーコンソールの使用方法の詳細については、Google Cloud ドキュメントの「[プロジェクトの作成と管理](https://cloud.google.com/resource-manager/docs/creating-managing-projects)」を参照してください。

iOS アプリへの Google の統合に関する詳細については、[Google ID に関するドキュメント](https://developers.google.com/identity/sign-in/ios/start-integrating)の「iOS 用 Google サインイン」を参照してください。

**Google ID プロバイダー (IdP) を追加するには**

1. [Amazon Cognito コンソール](https://console.aws.amazon.com/cognito/home)で **[ID プールの管理]** をクリックします。アイデンティティプールを選択します。

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

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

1. [**Google**] を選択します。

1. [Google Cloud プラットフォーム](https://console.cloud.google.com/)で作成した OAuth プロジェクトの**クライアント ID** を入力します。詳細については、*Google Cloud Platform コンソールヘルプ*の「[OAuth 2.0 の設定](https://support.google.com/cloud/answer/6158849)」を参照してください。

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

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

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

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

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

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

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

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

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

**Google の使用**

アプリケーションで Google を使用したログインを有効にするには、[iOS に関する Google のドキュメント](https://developers.google.com/identity/sign-in/ios/start/)に従います。認証に成功すると、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
<a name="set-up-google-1.ios-swift"></a>

**注記**  
アプリが Google を使用していて、複数のモバイルプラットフォームで利用可能になる場合は、Google を [OpenID Connect プロバイダー](open-id.md)とします。作成されたすべてのクライアント ID を追加オーディエンス値として追加することで、統合が向上します。Google のクライアント間の ID モデルの詳細については、「[クライアント間の ID](https://developers.google.com/accounts/docs/CrossClientAuth)」を参照してください。

**Google のセットアップ**

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

1. [Google 開発者コンソール](https://console.developers.google.com/)に移動して、新しいプロジェクトを作成します。

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

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

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

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

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

Google デベロッパーコンソールの使用方法の詳細については、Google Cloud ドキュメントの「[プロジェクトの作成と管理](https://cloud.google.com/resource-manager/docs/creating-managing-projects)」を参照してください。

iOS アプリへの Google の統合に関する詳細については、[Google ID に関するドキュメント](https://developers.google.com/identity/sign-in/ios/start-integrating)の「iOS 用 Google サインイン」を参照してください。

**Amazon Cognito コンソールのホームページ**で [[Manage Identity Pools]](https://console.aws.amazon.com/cognito/home) (ID プールの管理) をクリックします。

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

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

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

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

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

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

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

**Google の使用**

アプリケーションで Google を使用したログインを有効にするには、[iOS に関する Google のドキュメント](https://developers.google.com/identity/sign-in/ios/start/)に従います。認証に成功すると、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
<a name="set-up-google-1.javascript"></a>

**注記**  
アプリが Google を使用していて、複数のモバイルプラットフォームで利用可能になる場合は、Google を [OpenID Connect プロバイダー](open-id.md)として設定する必要があります。作成されたすべてのクライアント ID を追加オーディエンス値として追加することで、統合が向上します。Google のクライアント間の ID モデルの詳細については、「[クライアント間の ID](https://developers.google.com/accounts/docs/CrossClientAuth)」を参照してください。

**Google のセットアップ**

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

1. [Google 開発者コンソール](https://console.developers.google.com/)に移動して、新しいプロジェクトを作成します。

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

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

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

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

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

Google デベロッパーコンソールの使用方法の詳細については、Google Cloud ドキュメントの「[プロジェクトの作成と管理](https://cloud.google.com/resource-manager/docs/creating-managing-projects)」を参照してください。

Google をウェブアプリに統合する方法の詳細については、Google ID に関するドキュメントの「[Google でサインインする](https://developers.google.com/identity/gsi/web/guides/overview)」を参照してください。

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

**Google ID プロバイダー (IdP) を追加するには**

1. [Amazon Cognito コンソール](https://console.aws.amazon.com/cognito/home)で **[ID プールの管理]** をクリックします。アイデンティティプールを選択します。

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

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

1. [**Google**] を選択します。

1. [Google Cloud プラットフォーム](https://console.cloud.google.com/)で作成した OAuth プロジェクトの**クライアント ID** を入力します。詳細については、*Google Cloud Platform コンソールヘルプ*の「[OAuth 2.0 の設定](https://support.google.com/cloud/answer/6158849)」を参照してください。

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

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

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

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

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

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

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

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

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

**Google の使用**

アプリケーションで Google を使用したログインを有効にするには、「[ウェブに関する Google のドキュメント](https://developers.google.com/identity/gsi/web/guides/overview)」に従います。

認証に成功すると、`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.
     });
  }
}
```