メインコンテンツへスキップ
Amazon CognitoはBaaS(Backend as a Service:サービスとしてのバックエンド)で、アプリケーションのユーザーエクスペリエンスに的を絞って開発できるようにします。詳細とサービスへのサインアップについては、Amazon CognitoAWS CLIを用いたOpenID Connect(OIDC)プロバイダーの作成に関する説明をお読みください。

Amazon Web Servicesを構成する

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

まずは、Auth0にあるアプリケーションの情報を取得する必要があります。
  1. [Auth0 Dashboard]>[Applications(アプリケーション)]>[Application(アプリケーション)]に移動します。
  2. アプリケーションを選択してから、 [Settings(設定)] ビューに切り替えます。
  3. ドメインクライアントID を書き留めておきます。

新しいOpenID Connect(OIDC)プロバイダーを作成する

AWSで、新しいIDプロバイダー()を作成します。
  1. IAM Console(IAMコンソール)]を開いて、左のサイドバーから [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 を書き留めておきます。
IdPの作成後にIAMロールをセットアップする必要はありません。IAMロールがない場合は、アイデンティティプールの作成時にCognitoによってデフォルトのIAMロールが作成されます。

IDプールを作成する

AWSでIDプールを作成して、CognitoがAuth0のOIDC IDプロバイダーで認証できるようにします。
  1. Cognitoコンソール
  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からの公開署名鍵を使って(JWT)の署名を検証します。 Auth0のアプリケーションがRS256署名アルゴリズムを使用するように構成されていることを確認します。
  1. [Auth0 Dashboard]>[Applications(アプリケーション)]>[Applications(アプリケーション)]に移動し、アプリケーションを選択してから [Settings(設定)] ビューに切り替えます。
  2. [Advanced Settings(高度な設定)] セクションを展開してから、 [OAuth] ビューに切り替えます。
  3. [JSON Web Token(JWT)Signature Algorithm(JWT署名アルゴリズム)] フィールドを見つけて、ドロップダウンメニューから [RS256] を選択します。
  4. [Save Changes(変更の保存)] を選択します。

実装

アプリケーション内でAuth0を実装する際には、Auth0 Lock SDKを使うことができます。 ユーザーがAuth0にログインすると、資格情報がCognitoに送信されます。詳細については、AWS DocsにあるOpen ID Connectプロバイダー(IDプール)の説明をお読みください。 Cognitoは、ユーザーがAuth0から受け取るIDトークンを取得して、一意のCognito IDを生成するために使用します。ユーザーがAuth0経由でCognitoにログインした場合は、Cognito内に独自での利用を目的として情報を保管することができます。

トラブルシューティング

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

「無効なログイントークン」エラーを受け取った場合には、Auth0のアプリケーションがRS256署名アルゴリズムを使用するように構成されていることを確認します。
  1. [Auth0 Dashboard]>[Applications(アプリケーション)]>[Applications(アプリケーション)]に移動し、アプリケーションを選択してから [Settings(設定)] ビューに切り替えます。
  2. [Advanced Settings(高度な設定)] セクションを展開してから、 [OAuth] ビューに切り替えます。
  3. [JSON Web Token(JWT)Signature Algorithm(JWT署名アルゴリズム)] フィールドを見つけて、ドロップダウンメニューから [RS256] を選択します。
I