メニュー
Amazon Cognito
開発者ガイド (Version 最終更新日: 2017 年 8 月 26 日)

ユーザープールのアプリ統合およびフェデレーションの開始方法

Amazon Cognito ユーザープールのアプリ統合およびフェデレーションを使用すると、ユーザーのサインインエクスペリエンスをカスタマイズでき、Facebook、Google、Login with Amazon、および SAML 2.0 ID プロバイダを組み込んで統合できます。Amazon Cognito SDK および数行のコードを使用して、モバイルやウェブアプリにサインアップおよびサインインページを追加できます。これらの新機能によって、ユーザープールに直接サインインするユーザーと外部 ID プロバイダ経由でサインインするユーザーの両方を Amazon Cognito ユーザープールで認証し管理できます。すべてのユーザーには Amazon Cognito によって提供されるプロファイルとトークンがあります。

このガイドでは、カスタマイズ可能なユーザーエクスペリエンスおよび ID プロバイダとの組み込み統合を使用して Amazon Cognito ユーザープールの使用を開始する方法について説明します。独自のユーザーエクスペリエンスを構築して、SDK を使用して Amazon Cognito ユーザープールに接続する場合は、「Amazon Cognito ユーザープールの開始方法。」を参照してください。アプリが、フェデレーティッドユーザー向けに AWS 認証情報を取得する必要はあるが、フェデレーティッドユーザーを Amazon Cognito ユーザープールプロファイルまたはトークンにリンクしない場合は、「Amazon Cognito フェデレーションアイデンティティの開始方法」を参照してください。

Amazon Cognito ユーザープールをユーザーディレクトリとしてセットアップする

ユーザープールは、ユーザーのサインアップやサインインを行うため、およびユーザープロファイルを管理するために使用できるユーザーディレクトリです。ユーザープールは、ユーザーがサインインするときにユーザーのトークンも提供します。これらのトークンを使用してバックエンド API などのリソースへのそのユーザーのアクセスを (ユーザーアプリ経由で) 制御できます。ユーザープールには、直接サインインするネイティブなユーザー (つまり、ユーザー名とパスワードがユーザープールに保存されている) と外部 ID プロバイダを経由するフェデレーティッドユーザーの両方を含めることができます。また、外部 ID プロバイダのユーザー属性 (名前や E メールアドレスなど) をユーザープールの属性値にマッピングすることもできます。ネイティブユーザーとフェデレーティッドユーザーのどちらも、ユーザープロファイルを備え、サインイン時にユーザープールトークンを受け取ることになります。そのため、Amazon Cognito を使用してすべてのユーザーを処理するようにアプリケーションを標準化できます。

ユーザープールがまだない場合は、Amazon Cognito コンソールから作成および設定できます。詳細については、「クイックスタート: コンソールを使用して新しいユーザープールを作成する」および「AWS マネジメントコンソールでの Amazon Cognito ユーザープール設定ステップ」を参照してください。

アプリ統合とフェデレーション機能を試すには、Amazon Cognito コンソールで次の設定でユーザープールを作成することをお勧めします。

  • [Attributes] タブで、[Email address or phone number] および [Allow email addresses] を選択します。

  • [Policies] タブで、[Allow users to sign themselves up] を選択します (デフォルト)。

  • [Verifications] タブの [Do you want to require verification of emails or phone numbers?] で、[Email] (デフォルト) を選択します。

  • [App clients] タブで、アプリクライアントを作成します。

アプリの統合の設定

ユーザープールを作成すると、Amazon Cognito コンソールに [App integration] タブが表示され、そこでユーザーのサインアップおよびサインイン用のカスタマイズ可能な組み込み UI 設定を指定できます。詳細については、「モバイルおよびウェブアプリを Amazon Cognito ユーザープールに統合する」を参照してください。

アプリ統合を使用するには、Amazon Cognito コンソールで次の設定を指定します。

  1. [App client settings] タブで:

    1. 適切なボックスにチェックを入れ、ユーザーのサインインに使用することを許可する ID プロバイダを有効にします。

      注記

      ユーザーに Facebook や SAML ID プロバイダなどの外部 ID プロバイダを使用したサインインを許可するには、まず以下に説明するようにそれらを設定してから [App client settings] タブに戻って有効にします。

    2. ユーザーが認証された後 Amazon Cognito 承認サーバーが呼び出すコールバック URL を入力します。ウェブアプリの場合は、URL は https:// で始まる必要があります。iOS または Android アプリの場合は、myapp:// などのコールバック URL を使用できます。次のセクションで説明するように、SDK を統合した後でこの設定に戻ることができます。

    3. 具体的に除外する必要がない限り、すべての [Allowed OAuth Flows] および [Allowed OAuth scopes] のボックスにチェックを入れます。

  2. [Domain name] タブで、利用可能なドメインプレフィックスを入力します。

  3. [UI customization] タブで、ホストするエンドユーザーページにロゴをアップロードしたり、CSS の値を編集して外観をアプリやブランドに合うように変更したりできます。

    注記

    以下の URL を、ユーザープールの指定を含めて作成し、ブラウザに入力することで、カスタマイズを反映したホストされた UI を表示できます。 https://<your_domain>/login?response_type=code&client_id=<your_app_client_id>&redirect_uri=<your_callback_url> 変更がコンソールに反映されるまで最大 1 分待ってからブラウザを最新表示にする必要がある場合があります。

    ドメインは [Domain name] に表示されています。アプリクライアント ID およびコールバック URL は [App client settings] タブに表示されています。

ソーシャル ID プロバイダとのフェデレーションを設定する

Amazon Cognito ユーザープールは、Facebook、Google、Login with Amazon などのソーシャル ID プロバイダを組み込んで統合できます。これらのソーシャル ID プロバイダを Amazon Cognito ユーザープールで設定することで、これらをすばやく簡単にエンドユーザーのサインインの選択肢として追加できます。ユーザープールがアプリケーションの単一のアイデンティティ管理になります。Amazon Cognito コンソールで 1 つ以上のソーシャル ID プロバイダを追加し、ソーシャル ID プロバイダからユーザープールのユーザー属性へのユーザー属性 (E メールアドレスなど) のマッピングを定義できます。

エンドユーザーにソーシャル ID を使用してサインインさせない場合は、このステップをスキップできます。

詳細については、「ソーシャル ID プロバイダの追加」を参照してください。この機能を試すには、「Amazon Cognito コンソール」で次の選択を行ってください。

ソーシャル ID プロバイダを追加するには、最初に ID プロバイダで開発者アカウントを作成します。開発者アカウントが作成されたら、アプリを ID プロバイダに登録します。ID プロバイダがそのアプリ用のアプリ ID とアプリシークレットを作成します。これらの値をユーザープールで設定する必要があります。

ソーシャル ID プロバイダの使用を開始するためのリンクはこちらです。

ID プロバイダでユーザープールドメインまたはリダイレクト URL を設定する必要があります。これにより、ID プロバイダでユーザーを認証するときに Amazon Cognito によって提供されたリダイレクト URL が受け入れられます。

  • Google の場合、Amazon Cognito ユーザープールドメイン URL (https://<your-user-pool-domain>/oauth2/idpresponse) を Google アプリの [Authorized redirect URIs] ([Credentials] セクション内) に追加する必要があります。

  • Facebook の場合は、Amazon Cognito ユーザープールドメイン URL (https://<your-user-pool-domain>/) を、Facebook アプリの [Settings (Basic)]、[Website URL] に追加します。

  • Login with Amazon の場合は、Amazon Cognito ユーザープールドメイン URL (https://<your-user-pool-domain>/oauth2/idpresponse) を Login with Amazon アプリの [Allowed Return URLs] に追加します。

Amazon Cognito ユーザープールでソーシャル ID プロバイダを設定するには

  1. [Identity providers] タブで、ソーシャル ID プロバイダのボタン ([Facebook]、[Google]、または [Login with Amazon]) を選択します。

  2. アプリ ID と ID プロバイダから受け取ったアプリシークレットを入力します。

  3. 承認するスコープの名前を入力します。スコープは、アプリでアクセスするユーザー属性 (nameemail など) を定義します。Facebook の場合は、コンマで区切る必要があります (例: public_profile, email)。Google および Login with Amazon の場合は、スペースで区切って指定します。(Google の例: profile email openid。Login with Amazon の例: profile postal_code。)

    エンドユーザーはこれらの属性をアプリに提供することに同意を求められます。スコープの詳細については、Google、Facebook、および Login with Amazon のドキュメントを参照してください。

  4. [Update] [Facebook] (または [Google] や [Amazon]) を選択します。

  5. [Attribute mapping] タブで、次のように最低でも必須属性 (通常は email) のマッピングを追加します。

    1. Facebook、Google、または Amazon の属性名チェックボックスをオンにして選択します。Amazon Cognito コンソールにリストされていない追加属性の名前を入力することもできます。

    2. ドロップダウンリストから送信先ユーザープール属性を選択します。

SAML 2.0 ID プロバイダとのフェデレーションを設定する

Amazon Cognito ユーザープールはバインディングエンドポイントを使用した SAML 2.0 フェデレーションをサポートします。これにより、ユーザープールがユーザーエージェント経由で ID プロバイダから直接 SAML レスポンスを受信するため、アプリで SAML アサーションレスポンスを受信して解析する必要がなくなります。Amazon Cognito はアプリケーションに代わって認証サービスプロバイダとして機能します。ユーザープールがアプリケーションのアイデンティティ管理の単一ポイントになるため、アプリケーションを複数の SAML ID プロバイダと統合する必要はありません。Amazon Cognito コンソールで 1 つ以上の SAML ID プロバイダを追加し、SAML ID プロバイダから (SAML アサーションクレーム経由で) ユーザープールのユーザー属性へのユーザー属性 (E メールアドレスなど) のマッピングを定義できます。

エンドユーザーに SAML フェデレーションを使用してサインインさせない場合は、このステップをスキップできます。SAML ID プロバイダをセットアップするには、Amazon Cognito と SAML ID プロバイダの両方で設定タスクを行う必要があります。

SAML 2.0 ID プロバイダで、ユーザープールを証明書利用者として、またはアプリケーションとして設定します。詳細については、ID プロバイダのドキュメントを参照してください。

リダイレクトまたはサインイン URL ( https://<yourDomainPrefix>.auth.<region>.amazoncognito.com/saml2/idpresponse) を入力します。ドメインのプレフィックスとユーザープールのリージョン値は、Amazon Cognito コンソールの [Domain name] タブにあります。

注記

2017 年 8 月 10 日以前のパブリックベータ中にユーザープールで作成された SAML ID プロバイダには、リダイレクト URL https://<yourDomainPrefix>.auth.<region>.amazoncognito.com/login/redirect があります。パブリックベータ版のこのような SAML ID プロバイダのいずれかがユーザープールにある場合、以下を行う必要があります。

  • 新しいリダイレクト URL を使用する新しいものと置き換える。

  • SAML ID プロバイダの設定を更新し、古いリダイレクト URL と新しいリダイレクト URL の両方を受け入れる。

Amazon Cognito のすべての SAML ID プロバイダは新しい URL に切り替えられ、古いものは 2017 年 10 月 31 日に機能停止します。

一部の SAML ID プロバイダでは、urn/対象者 URI/SP エンティティ ID を urn:amazon:cognito:sp:<yourUserPoolID> のフォームに指定する必要があります。ユーザープール ID は Amazon Cognito コンソールの [App client settings] タブにあります。

また、SAML ID プロバイダを設定して、 ユーザープールの必須属性の属性値を指定する必要があります。通常 email はユーザープールの必須属性です。その場合、SAML ID プロバイダは SAML アサーションに email 値 (クレーム) を指定する必要があります。

Amazon Cognito ユーザープールで SAML 2.0 ID プロバイダを設定するには

詳細については、「Amazon Cognito ユーザープールでフェデレーションを使用する」を参照してください。この機能を試すには、「Amazon Cognito コンソール」で次の選択を行ってください。

  1. [Identity providers] タブで、SAML ID プロバイダからのメタデータドキュメントをアップロードするかドキュメントの URL を入力して新しいプロバイダを作成します。メタデータドキュメントの詳細については、「Amazon Cognito ユーザープールでフェデレーションを使用する」を参照してください。

  2. [Attribute mapping] タブで、次のように最低でも必須属性 (通常は email) のマッピングを追加します。

    1. SAML 属性名を入力します。ID プロバイダからの SAML アサーションに表示されます。ID プロバイダがサンプル SAML アサーションを提供している場合は、名前を見つけやすいかもしれません。email などの単純な名前を使用している ID プロバイダもあれば、http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress のような名前を使用している ID プロバイダもあります。

    2. ドロップダウンリストから送信先ユーザープール属性を選択します。

Amazon Cognito iOS、Android、および JavaScript SDK を使用して、カスタマイズ可能なサインインフローをモバイルまたはウェブアプリに統合できます。SDK を利用すると、ホストされた UI の表示、ユーザープールのトークンの受信、トークンの更新に役立ちます。詳細については、各 SDK のドキュメントを参照してください。

また、アプリがリクエストを作成し Amazon Cognito 承認サーバーを直接呼び出すこともできます。次の例では、ホストされたサインインページを表示して、リクエストを承認するブラウザからのサインインをテストします。

Copy
https://<yourDomainPrefix>.auth.<region>.amazoncognito.com/authorize? response_type=code& client_id=<yourAppClientId>& redirect_uri=<yourRedirectURL>& state=STATE& scope=email+phone+openid+profile+aws.cognito.signin.user.admin

詳細については、「Amazon Cognito の Auth API リファレンス」を参照してください。

アプリ統合およびフェデレーション用の SDK とサンプルアプリの入手方法

Amazon Cognito ユーザープール用のアプリ統合およびフェデレーションの SDK とサンプルアプリは次の場所にあります。

ここから先の処理

上記の手順と SDK を使用して、ソーシャル ID または SAML フェデレーションを使用したサインアップとサインインを、Amazon Cognito ユーザープールを使用したモバイルアプリまたはウェブアプリに追加できます。ユーザーがサインインすると、アプリがユーザープールプロファイルを使用して、ユーザーやユーザープールが提供するトークンを管理し、API およびリソースへのアクセスを承認できます。アプリがこれらのユーザープールトークンを使用して S3 バケットや DynamoDB テーブルなどのリソースにアクセスするための AWS 認証情報を取得する必要がある場合は、「ユーザープールをフェデレーテッドアイデンティティと統合する」を参照してください。Amazon Cognito ユーザープールトークンを API ゲートウェイ で直接使用する詳細については、API ゲートウェイ 開発者ガイドAmazon Cognito ユーザープールの使用を参照してください。