

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

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

Amazon Cognito アイデンティティプールは Login with Amazon と統合して、モバイルアプリケーションとウェブアプリケーションのユーザーにフェデレーション方式の認証を提供します。このセクションでは、ID プロバイダー (IdP) として Login with Amazon を使用してアプリケーションを登録し、セットアップする方法について説明します。

[デベロッパーポータル](https://developer.amazon.com/login-with-amazon)で Amazon Cognito を使用するための Login with Amazon を設定します。詳細については、Login with Amazon のよくある質問の「[Login with Amazon のセットアップ](https://developer.amazon.com/docs/login-with-amazon/faq.html#setting-up-login-with-amazon)」を参照してください。

**注記**  
Login with Amazon を Xamarin アプリケーションに統合するには、[Xamarin 入門ガイド](https://developer.xamarin.com/guides/cross-platform/getting_started/)に従ってください。

**注記**  
Login with Amazon を Unity プラットフォームでネイティブに統合することはできません。代わりに、ウェブビューを使用して、ブラウザのサインインフローに従います。

## Login with Amazon のセットアップ
<a name="login-with-amazon-setup"></a>

**Login with Amazon の実装**

[Amazon デベロッパーポータル](https://developer.amazon.com/apps-and-games/login-with-amazon)では、OAuth アプリケーションをセットアップして ID プールと統合し、Login with Amazon のドキュメントを検索し、SDK をダウンロードできます。**[Developer console]** (デベロッパーコンソール) を選択し、デベロッパーポータルで **Login with Amazon** を選択します。アプリケーションのセキュリティプロファイルを作成し、Login with Amazon 認証メカニズムをアプリにビルドできます。Login with Amazon 認証をアプリに統合する方法の詳細については、「[認証情報の取得](getting-credentials.md)」を参照してください。

Amazon は、新しいセキュリティプロファイルに対して OAuth 2.0 **クライアント ID** を発行します。**クライアント ID** は、セキュリティプロファイルの **[Web Settings]** (ウェブ設定) タブにあります。アイデンティティプールの Login with Amazon IdP の **[アプリケーション ID]** フィールドに**セキュリティプロファイル ID** を入力します。

**注記**  
アイデンティティプールの Login with Amazon IdP の **[アプリケーション ID]** フィールドに**セキュリティプロファイル ID** を入力します。これは、**クライアント ID** を使用するユーザープールとは異なります。

## Amazon Cognito コンソールで外部プロバイダーを設定する
<a name="login-with-amazon-configure-provider"></a>

**Amazon アイデンティティプロバイダー (IdP) を使ってログインを追加するには**

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

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

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

1. **[Login with Amazon]** を選択します。

1. [Login with Amazon](https://developer.amazon.com/apps-and-games/login-with-amazon) で作成した OAuth プロジェクトの**アプリ ID** を入力します。詳細については、「[Login with Amazon のドキュメント](https://developer.amazon.com/docs/login-with-amazon/documentation-overview.html)」を参照してください。

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

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

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

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

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

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

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

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

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

## Login with Amazon の使用: Android
<a name="set-up-amazon-1.android"></a>

Amazon ログインを認証したら、TokenListener インターフェイスの onSuccess メソッドで Amazon Cognito 認証情報プロバイダーにトークンを渡すことができます。コードは次のようになります。

```
@Override
public void onSuccess(Bundle response) {
    String token = response.getString(AuthzConstants.BUNDLE_KEY.TOKEN.val);
    Map<String, String> logins = new HashMap<String, String>();
    logins.put("www.amazon.com", token);
    credentialsProvider.setLogins(logins);
}
```

## Login with Amazon の使用: iOS - Objective-C
<a name="set-up-amazon-1.ios-objc"></a>

Amazon のログインを認証したら、AMZNAccessTokenDelegate の requestDidSucceed メソッドで Amazon Cognito 認証情報プロバイダーにトークンを渡すことができます。

```
- (void)requestDidSucceed:(APIResult \*)apiResult {
    if (apiResult.api == kAPIAuthorizeUser) {
        [AIMobileLib getAccessTokenForScopes:[NSArray arrayWithObject:@"profile"] withOverrideParams:nil delegate:self];
    }
    else if (apiResult.api == kAPIGetAccessToken) {
        credentialsProvider.logins = @{ @(AWSCognitoLoginProviderKeyLoginWithAmazon): apiResult.result };
    }
}}
```

## Login with Amazon の使用: iOS - Swift
<a name="set-up-amazon-1.ios-swift"></a>

Amazon のログインを認証したら、`AMZNAccessTokenDelegate` の `requestDidSucceed` メソッドで Amazon Cognito 認証情報プロバイダーにトークンを渡すことができます。

```
func requestDidSucceed(apiResult: APIResult!) {
    if apiResult.api == API.AuthorizeUser {
        AIMobileLib.getAccessTokenForScopes(["profile"], withOverrideParams: nil, delegate: self)
    } else if apiResult.api == API.GetAccessToken {
        credentialsProvider.logins = [AWSCognitoLoginProviderKey.LoginWithAmazon.rawValue: apiResult.result]
    }
}
```

## Login with Amazon の使用: JavaScript
<a name="set-up-amazon-1.javascript"></a>

ユーザーが Login with Amazon と認証し、ウェブサイトにリダイレクトされると、Login with Amazon access\$1token がクエリ文字列で提供されます。このトークンを認証情報ログインマップに渡します。

```
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
   IdentityPoolId: 'IDENTITY_POOL_ID',
   Logins: {
       'www.amazon.com': 'Amazon Access Token'
   }
});
```