> ## Documentation Index
> Fetch the complete documentation index at: https://auth0-actions-triggers-prototype.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Amazon Cognitoと統合する

> OpenID Connect（OIDC）プロバイダーを使用して、Auth0をAmazon Cognitoと統合する方法について説明します。

Amazon CognitoはBaaS（Backend as a Service：サービスとしてのバックエンド）で、アプリケーションのユーザーエクスペリエンスに的を絞って開発できるようにします。詳細とサービスへのサインアップについては、[Amazon Cognito](http://aws.amazon.com/cognito/)と[AWS CLIを用いたOpenID Connect（OIDC）プロバイダー](https://docs.aws.amazon.com/cli/latest/reference/iam/create-open-id-connect-provider.html)の作成に関する説明をお読みください。

## Amazon Web Servicesを構成する

### Auth0アプリケーションの詳細情報を取得する

まずは、Auth0にあるアプリケーションの情報を取得する必要があります。

1. [［Auth0 Dashboard］>［Applications（アプリケーション）］>［Application（アプリケーション）］](https://manage.auth0.com/#/applications)に移動します。
2. アプリケーションを選択してから、 **［Settings（設定）］** ビューに切り替えます。
3. **ドメイン** と **クライアントID** を書き留めておきます。

### 新しいOpenID Connect（OIDC）プロバイダーを作成する

AWSで、新しいIDプロバイダー（<Tooltip data-tooltip-id="react-containers-DefinitionTooltip-2" href="/docs/ja-jp/glossary?term=idp" tip="IDプロバイダー（IdP）: デジタルIDを保存および管理するサービス。" cta="用語集の表示">IdP</Tooltip>）を作成します。

1. ［[IAM Console（IAMコンソール）](https://console.aws.amazon.com)］を開いて、左のサイドバーから **［Identity Providers（IDプロバイダー）］** を選択し、 **［Add Provider（プロバイダーの追加）］** を選択します。
2. **［OpenID Connect］** を **［Provider Type（プロバイダータイプ）］** として選択します。
3. **［Provider URL（プロバイダーURL）］** で以下を行います。

   1. **ドメイン** を **［Provider URL（プロバイダーURL）］** フィールドに入力します。
   2. **クライアントID** を **［Audience（オーディエンス）］** フィールドに入力します。
4. **［Add Provider（プロバイダーの追加）］** を選択します。
5. 新しく作成されたプロバイダーに移動して、 **プロバイダーARN** を書き留めておきます。

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  IdPの作成後にIAMロールをセットアップする必要はありません。IAMロールがない場合は、アイデンティティプールの作成時にCognitoによってデフォルトのIAMロールが作成されます。
</Callout>

### IDプールを作成する

AWSでIDプールを作成して、CognitoがAuth0のOIDC IDプロバイダーで認証できるようにします。

1. [Cognitoコンソール](https://console.aws.amazon.com/cognito/home)
2. **［Federated Identities（フェデレーションアイデンティティ）］** を選択します。
3. **［Identity Pool Name（IDプール名）］** にプールの名前（`Auth0`など）を指定します。
4. **［Authentication Providers（認証プロバイダー）］** で **［OpenID］** タブを選択してから、前の手順で作成したプロバイダーの名前を選択します。
5. **［Create Pool（プールの作成）］** を選択してから **［Allow（許可する）］** を選択し、新しいIDプールの作成を完了させます。
6. Dashboardで **［Edit Identity Pool（IDプールの編集）］** を選択して **［Identity Pool ID（IDプールID）］** を表示します。
7. 自動的に作成されたIAMロールの **ARN** を書き留めておきます。Cognitoに資格情報を送信する際には、この値が使用されます。

## Auth0を構成する

Cognitoは[OpenID Provider Metadata](https://subscription.auth0.com/.well-known/jwks.json)からの公開署名鍵を使って<Tooltip data-tooltip-id="react-containers-DefinitionTooltip-2" href="/docs/ja-jp/glossary?term=json-web-token" tip="JSON Web Token（JWT）: 二者間のクレームを安全に表現するために使用される標準IDトークン形式（および多くの場合、アクセストークン形式）。" cta="用語集の表示">JSON Web Token</Tooltip>（JWT）の署名を検証します。

Auth0のアプリケーションがRS256署名アルゴリズムを使用するように構成されていることを確認します。

1. [［Auth0 Dashboard］>［Applications（アプリケーション）］>［Applications（アプリケーション）］](https://manage.auth0.com/#/applications)に移動し、アプリケーションを選択してから **［Settings（設定）］** ビューに切り替えます。
2. **［Advanced Settings（高度な設定）］** セクションを展開してから、 **［OAuth］** ビューに切り替えます。
3. **［JSON Web Token（JWT）Signature Algorithm（JWT署名アルゴリズム）］** フィールドを見つけて、ドロップダウンメニューから **［RS256］** を選択します。
4. **［Save Changes（変更の保存）］** を選択します。

## 実装

アプリケーション内でAuth0を実装する際には、[Auth0 Lock SDK](https://auth0.com/docs/libraries#lock)を使うことができます。

ユーザーがAuth0にログインすると、資格情報がCognitoに送信されます。詳細については、[AWS DocsにあるOpen ID Connectプロバイダー（IDプール）の説明](http://docs.aws.amazon.com/cognito/latest/developerguide/open-id.html)をお読みください。

Cognitoは、ユーザーがAuth0から受け取るIDトークンを取得して、一意のCognito IDを生成するために使用します。ユーザーがAuth0経由でCognitoにログインした場合は、Cognito内に独自での利用を目的として情報を保管することができます。

## トラブルシューティング

### 「無効なログイントークン」エラー

「無効なログイントークン」エラーを受け取った場合には、Auth0のアプリケーションがRS256署名アルゴリズムを使用するように構成されていることを確認します。

1. [［Auth0 Dashboard］>［Applications（アプリケーション）］>［Applications（アプリケーション）］](https://manage.auth0.com/#/applications)に移動し、アプリケーションを選択してから **［Settings（設定）］** ビューに切り替えます。
2. **［Advanced Settings（高度な設定）］** セクションを展開してから、 **［OAuth］** ビューに切り替えます。
3. **［JSON Web Token（JWT）Signature Algorithm（JWT署名アルゴリズム）］** フィールドを見つけて、ドロップダウンメニューから **［RS256］** を選択します。
