Amazon Cognito ユーザープールで LinkedIn をソーシャル ID プロバイダーとして設定する方法を教えてください。

最終更新日: 2019 年 6 月 27 日

アプリのユーザーが LinkedIn を使ってサインインできるようにしたいです。Amazon Cognito ユーザープールで LinkedIn をソーシャル ID プロバイダー (IdP) として設定する方法を教えてください。

簡単な説明

LinkedIn は、OpenID Connect (OIDC) プロバイダーをユーザープールに追加するときに Amazon Cognito が必要とするすべてのフィールドを提供するわけではありません。

LinkedIn と Amazon Cognito の間の中間エージェントとして、Auth0 などのサードパーティサービスを使用する必要があります。Auth0 は LinkedIn から ID を取得し、Amazon Cognito は Auth0 からこれらの ID を取得します。

注: Auth0 は AWS と提携していないサードパーティのサービスです。Auth0 を使うと別途料金が発生する可能性があります。

同様の統合の問題がある可能性がある他のソーシャル IdP にもこの設定を使用できます。詳しくは、Auth0 ウェブサイトの「接続」を参照してください。

解決方法

アプリクライアントおよびドメイン名を持つ Amazon Cognito ユーザープールを作成する

これらの前提条件の作成に関する詳細については、以下の記事を参照してください。

Auth0 アカウントにサインアップする

注: 既に Auth0 アカウントをお持ちの場合は、ログインしてください。

開始するには、Auth0 ウェブサイトの申し込みページにメールアドレスとパスワードを入力してください。

ログインしたら、Auth0 テナント名を書き留めます。

Auth0 アプリケーションを作成する

注: 使用したい Auth0 アプリケーションを既に作成している場合は、次のセクションに進んでください。

  1. Auth0 ウェブサイトダッシュボードで、[+ アプリケーションの作成] を選択します。
  2. [アプリケーションの作成] ダイアログで、アプリケーションの名前を入力します。例えば、My App などです。
  3. [Choose an application type] で、[Single Page Web Applications] を選択します。
  4. [作成] を選択します。
  5. 新しいアプリケーションの [設定] ペインで、以下を実行してください。
    [クライアント ID] と [クライアントシークレット] を見つけて、それらをコピーします。後で Auth0 を Amazon Cognito ユーザープールに接続するときにこれらが必要になります。
    [許可されたコールバック URL] には、https://yourDomainPrefix.auth.region.amazoncognito.com/oauth2/idpresponse を入力します。
    注: yourDomainPrefixregion をユーザープールの値に置き換えてください。ユーザープールの管理ページの [ドメイン名] タブの [Amazon Cognito コンソール] でそれらが見つかります。
  6. [変更の保存] を選択します。

LinkedIn アカウントにサインアップする

注: 既に LinkedIn アカウントをお持ちの場合は、サインインしてください。

開始するには、LinkedIn ウェブサイトの申し込みページに E アドレスとパスワードを入力してください。

LinkedIn アプリを作成する

  1. LinkedIn Developers ウェブサイトで、[アプリの作成] を選択します。
  2. [アプリの作成] ページで、LinkedIn アプリをカスタマイズするための必須フィールドと優先フィールドをすべて入力し、[アプリの作成] を選択します。
  3. [認証] ペインを選択します。
    注: [権限] の下に、r_emailaddressr_liteprofile がリストされていることを確認してください。これらの権限は、Auth0 が必要な LinkedIn ユーザー情報にアクセスするために必要です。
  4. [アプリケーション認証情報] の下で、[クライアント ID] と [クライアントシークレット] を見つけてコピーします。後で LinkedIn を Auth0 アプリに接続するときにどちらも必要になります。
  5. [OAuth 2.0 設定] の下で、リダイレクト URL: の側にある鉛筆アイコンを選択してから、[+ リダイレクト URL の追加] をクリックします。
  6. [リダイレクト URL:] の下に https://tenantName.auth0.com/login/callback を入力し、tenantNameAuth0 テナント名 (または Auth0 カスタムドメイン) に置き換えます。

詳細については、Auth0 ウェブサイトの「LinkedIn へのログインをアプリに追加する」を参照してください。

Auth0 から LinkedIn に接続する

  1. [Auth0 ウェブサイトのダッシュボード] の左側のナビゲーションペインで、[接続] を選択してから [ソーシャル] をクリックします。
  2. [LinkedIn] を選択します。
  3. LinkedIn ダイアログの [設定] ペインで、以下を実行してください。
    [API キー] には、LinkedIn アプリから先にコピーしたクライアント ID を入力します。
    [シークレットキー] には、LinkedIn アプリから先にコピーしたクライアントシークレットを入力します。
    [属性] では、[E メールアドレス] チェックボックスをオンにします。
  4. [保存] を選択します。
  5. LinkedIn ダイアログの [アプリケーション] ペインで、LinkedIn をソーシャル IdP として有効にするアプリケーションを選択します。
  6. [保存] を選択します。

詳細については、Auth0 ウェブサイトの「LinkedIn へのログインをアプリに追加する」を参照してください。

Auth0 との LinkedIn ソーシャルコネクションをテストする

  1. LinkedIn ダイアログで、[試行] を選択します。または、[Auth0 ウェブサイトダッシュボード] の左側のナビゲーションペインで、[接続]、[ソーシャル] の順に選択してから、LinkedIn の横にある [試行] をクリックします。新しいブラウザタブまたはウィンドウが、LinkedIn サインインページに開きます。
  2. E メールアドレスとパスワードで LinkedIn にサインインします。
  3. アプリが LinkedIn のユーザー情報にアクセスすることを許可するように求められたら、[許可] を選択します。

詳細については、Auth0 のウェブサイトの「ソーシャルコネクションのテスト」を参照してください。

ユーザープールに OIDC プロバイダーを追加する

  1. ユーザープールの [Amazon Cognito コンソール] 管理ページの [フェデレーション] で、[ID プロバイダー] を選択します。
  2. [OpenID Connect] を選択します。
  3. 次のように、OIDC プロバイダの詳細に Auth0 アプリの詳細を入力します。
    [プロバイダー名] には、名前を入力します (たとえば、Auth0-LinkedIn)。この名前は Amazon Cognito でホストされているウェブ UI に表示されます。
    注: プロバイダーを作成した後でこのフィールドを変更することはできません。このフィールドをアプリに含めるか、Amazon Cognito でホストされているウェブ UI を使用する予定の場合は、アプリのユーザーに見られてもよい名前を付けてください。
    [クライアント ID] には、Auth0 アプリケーションから先にコピーした [クライアント ID] を入力します。
    [クライアントシークレット (オプション)] には、Auth0 アプリケーションから先にコピーしたクライアントシークレットを入力します。
    [属性リクエストメソッド] には、設定を GET のままにしてください。
    [認証範囲] には、openid プロファイル E メールを入力します。
    [発行者] には、Auth0 プロファイルの URL を入力します。たとえば、https://tenantName.auth0.com で、tenantName の部分を Auth0 テナント名 に置き換えます。
    [識別子 (オプション)] には、OIDC プロバイダの名前の代わりに、エンドポイント URL で後で使用するカスタム文字列をオプションで入力できます。
  4. Auth0 の OIDC 設定エンドポイントを取得するには、[ディスカバリーの実行] を選択します。
  5. [プロバイダーの作成] を選択します。

詳細については、「ユーザープールへ OIDC IdP を追加する」を参照してください。

ユーザープールのアプリクライアント設定を変更する

  1. ユーザープールの [Amazon Cognito コンソール] 管理ページの [アプリケーションの統合] で、[アプリクライアントの設定] を選択します。
  2. アプリクライアントページで、次の操作を行います。
    [有効な ID プロバイダー] の下で、OIDC プロバイダー (Auth0-LinkedIn など) を選択し、[Cognito ユーザープール] チェックボックスをオンにします。
    [コールバック URL] には、ログイン後にユーザーをリダイレクトする URL を入力します。テスト用に、https://example.com/ のように有効な URL を入力できます。
    [ログアウト URL] には、ログアウト後にユーザーをリダイレクトする URL を入力します。テスト用に、https://example.com/ のように有効な URL を入力できます。
    [許可された OAuth フロー] で、[認証コード付与] または [黙示的な付与]、または必要に応じて両方のチェックボックスをオンにします。
    注: 使用可能な許可された OAuth フローに応じて、response_typeエンドポイント URL のパラメータに使用できる値 (「code」または「token」) が決まります。
    [許可された OAuth スコープ] の下で、少なくとも [E メール] と [openid] チェックボックスをオンにします。
  3. [変更の保存] を選択します。

詳細については、「アプリクライアント設定の概要」を参照してください。

Auth0 からユーザープールへの属性のマッピング

  1. ユーザープールの [Amazon Cognito コンソール] 管理ページの [フェデレーション] で、[属性マッピング] を選択します。
  2. 属性マッピングページで、[OIDC] タブを選択します。
  3. ユーザープールに複数の OIDC プロバイダーがある場合は、ドロップダウンから新しいプロバイダーを選択します。
  4. OIDC 属性 sub がユーザープール属性のユーザー名にマップされていることを確認します。
  5. [OIDC 属性の追加] を選択します。新しい OIDC 属性には、E メールを入力します。[ユーザープール属性] には、[E メール] を選択します。
  6. (オプション) Auth0 から渡したい追加の OIDC 属性を追加します。たとえば、given_namefamily_name を対応する Amazon Cognito ユーザープール属性にマッピングできます。
    注: Auth0 ユーザーに保存されているすべての OIDC 属性を表示するには、[Auth0 ウェブサイトダッシュボード] の左側のナビゲーションペインで、[ユーザーとロール] をクリックし、 [ユーザー] を選択します。ユーザーを選択してから、[Raw JSON] をクリックします。

詳細については、「ユーザープールの ID プロバイダ属性マッピングの指定」を参照してください。

エンドポイント URL を作成する

独自の設定の値を使用して、次のエンドポイント URL を作成してください。

https://yourDomainPrefix.auth.region.amazoncognito.com/oauth2/authorize?response_type=code&client_id=yourClientId&redirect_uri=redirectUrl

設定に合わせて URL をカスタマイズするには、次の手順を実行してください。

  • yourDomainPrefixregion をユーザープールの値に置き換えます。ユーザープールの管理ページの [ドメイン名] タブの [Amazon Cognito コンソール] でそれらが見つかります。
  • 許可された OAuth フローに対して以前に黙示的な付与フローのみを選択した場合は、response_type=coderesponse_type=token に変更します。
  • yourClientId をアプリケーションクライアントの ID に置き換え、redirectUrl をアプリケーションクライアントのコールバック URL に置き換えます。ユーザープールの管理ページの [アプリクライアント設定] タブにある [Amazon Cognito コンソール] でそれらが見つかります。

詳細については、「Amazon Cognito のホストされたウェブ UI を設定する方法を教えてください」および「認証エンドポイント」を参照してください。

エンドポイント URL をテストする

  1. 作成したエンドポイント URL をウェブブラウザに入力します。
  2. [コーポレート ID でサインイン] の下で、OIDC プロバイダーの名前を選択します (たとえば、Auth0-LinkedIn)。Auth0 アプリケーションのログインページにリダイレクトされます。
  3. [LinkedIn でログイン] を選択します。LinkedIn のサインインページにリダイレクトされます。
    注: 代わりに Amazon Cognito アプリクライアントのコールバック URL にリダイレクトされている場合は、既に LinkedIn にサインインしていることを意味します。
  4. LinkedIn サインインページで、LinkedIn アカウントの E メールアドレス (または電話番号) とパスワードを入力します。
  5. [サインイン] を選択します。

ログインに成功すると、アプリクライアントのコールバック URL にリダイレクトされます。認証コードまたはユーザープールトークンは、ウェブブラウザのアドレスバーの URL に表示されます。

(オプション) Amazon Cognito がホストする UI をスキップする

アプリにサインインするときにユーザーに Amazon Cognito がホストするウェブ UI をスキップさせたい場合は、代わりに次の URL をエンドポイント URL として使用します。

https://yourDomainPrefix.auth.region.amazoncognito.com/oauth2/authorize?response_type=code&identity_provider=oidcProviderName&client_id=yourClientId&redirect_uri=redirectUrl&scope=allowedOauthScopes

設定に合わせて URL をカスタマイズするには、次の手順を実行してください。

  • yourDomainPrefixregion をユーザープールの値に置き換えます。ユーザープールの管理ページの [ドメイン名] タブの [Amazon Cognito コンソール] でそれらが見つかります。
  • 許可された OAuth フローに対して以前に黙示的な付与フローのみを選択した場合は、response_type=coderesponse_type=token に変更します。
  • oidcProviderName をユーザープールの OIDC プロバイダーの名前に置き換えます。たとえば、Auth0-LinkedIn です。
  • (オプション) [識別子 (オプション)] フィールドで OIDC プロバイダの識別子を追加した場合は、identity_provider=oidcProviderNameidp_identifier=idpIdentifier に置き換え、idpIdentifier をカスタムの識別子文字列に置き換えることができます。
  • yourClientId をアプリケーションクライアントの ID に置き換え、redirectUrl をアプリケーションクライアントのコールバック URL に置き換えます。ユーザープールの管理ページの [アプリクライアント設定] タブにある [Amazon Cognito コンソール] でそれらが見つかります。
  • allowedOauthScopes を、Amazon Cognito アプリクライアントにリクエストさせたい特定のスコープに置き換えます。

詳細については、「Amazon Cognito のホストされたウェブ UI を設定する方法を教えてください」および「認証エンドポイント」を参照してください。