Amazon Cognito ユーザープールで LinkedIn をソーシャル ID プロバイダーとして設定する方法を教えてください。
アプリのユーザーが 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 のウェブサイトの「Identity Providers」 (ID プロバイダー) をご覧ください。
解決方法
アプリケーションクライアントとドメイン名を使用して Amazon Cognito ユーザープールを作成する
これらの前提条件の作成に関する詳細については、以下の記事を参照してください。
- チュートリアル: ユーザープールの作成
重要: ユーザープールを作成するときは、標準属性で email を選択したままにしてください。 - ユーザープールのアプリクライアントの設定
- ユーザープールのドメイン名の追加
Auth0 アカウントのサインアップ
Auth0 ウェブサイトのサインアップページで E メールアドレスとパスワードを入力して開始します。または、既に Auth0 アカウントをお持ちの場合は、ログインしてください。ログイン後、Auth0 テナント名を書き留めます。
Auth0 アプリケーションを作成する
- [Auth0 website dashboard] (Auth0 ウェブサイトダッシュボード) で、[+ Create Application] (+ アプリケーションの作成) を選択します。
注: 使用する Auth0 アプリケーションを既に作成済みの場合は、次のセクションに進んでください。 - [Create Application] (アプリケーションの作成) ダイアログで、アプリケーションの名前を入力します。例えば、My App などです。
- [Choose an application type] で、[Single Page Web Applications] を選択します。
- [作成] を選択します。
- 新しいアプリケーションの [設定] ペインで、以下を実行してください。
[クライアント ID] と [クライアントシークレット] を見つけて、それらをコピーします。後で Auth0 を Amazon Cognito ユーザープールに接続するときにこれらが必要になります。
[許可されたコールバック URL] には、https://yourDomainPrefix.auth.region.amazoncognito.com/oauth2/idpresponse を入力します。
注: yourDomainPrefix と region をユーザープールの値に置き換えてください。ユーザープールの管理ページの [ドメイン名] タブの [Amazon Cognito コンソール] でそれらが見つかります。 - [Save Changes] (変更を保存) を選択します。
LinkedIn アカウントにサインアップする
LinkedIn ウェブサイトのサインアップページで E メールアドレスとパスワードを入力して開始します。または、既に LinkedIn アカウントをお持ちの場合は、サインインしてください。
LinkedIn アプリを作成する
- LinkedIn Developers ウェブサイトで、[アプリの作成] を選択します。
- アプリを作成するページで、LinkedIn アプリをカスタマイズするための必須フィールドと優先フィールドをすべて入力し、[Create app] (アプリの作成) を選択します。
- [Auth] (認証) タブを選択します。r_emailaddress と r_liteprofile がリストされていることを確認してください。これらの権限は、Auth0 が必要な LinkedIn ユーザー情報にアクセスするために必要です。
注: r_emailaddress と r_liteprofile がリストに表示されない場合は、アプリケーションに「Sign In with LinkedIn」という製品を追加してください。これは LinkedIn Dev ページの [Products] (製品) タブにあります。 - [Application credentials] (アプリケーション認証情報) の下で、[Client ID] (クライアント ID) と [Client Secret] (クライアントシークレット) を見つけてコピーします。後で LinkedIn を Auth0 アプリに接続する際、これらの情報が必要になります。
- [OAuth 2.0 settings] (OAuth 2.0 設定) の下で、[Redirect URLs:] (リダイレクト URL:) の側にある鉛筆アイコンを選択してから、[+ Add redirect URL] (+ リダイレクト URL の追加) を選択します。
- [Redirect URLs:] (リダイレクト URL:) の下に https://tenantName.us.auth0.com/login/callback と入力します。tenantName の部分は、Auth0 テナント名 (または Auth0 カスタムドメイン) に置き換えます。
Auth0 から LinkedIn に接続する
- [Auth0 website dashboard] (Auth0 ウェブサイトダッシュボード) の左側のナビゲーションペインで、[Authentication] (認証) を選択してから [Social] (ソーシャル) を選択します。
- [LinkedIn] を選択します。
- LinkedIn ダイアログボックスの [設定] ペインで、以下を実行してください。
[API キー] には、LinkedIn アプリケーションから先にコピーしたクライアント ID を入力します。
[シークレットキー] には、LinkedIn アプリケーションから先にコピーしたクライアントシークレットを入力します。
[属性] では、[E メールアドレス] チェックボックスをオンにします。 - [Save] (保存) を選択します。
- LinkedIn ダイアログボックスの [アプリケーション] ペインで、LinkedIn をソーシャル IdP として有効にするアプリケーションを選択します。
- [Save] (保存) を選択します。
Auth0 との LinkedIn ソーシャルコネクションをテストする
- LinkedIn ダイアログボックスで、[試行] を選択します。または、[Auth0 ウェブサイトダッシュボード] の左側のナビゲーションペインで、[接続]、[ソーシャル] の順に選択してから、LinkedIn の横にある [試行] をクリックします。新しいブラウザタブまたはウィンドウが、LinkedIn サインインページに開きます。
- E メールアドレスとパスワードで LinkedIn にサインインします。
- アプリケーションが LinkedIn のユーザー情報にアクセスすることを許可するように求められたら、[許可] を選択します。
ユーザープールに OIDC プロバイダーを追加する
- ユーザープールの [Amazon Cognito コンソール] 管理ページの [フェデレーション] で、[ID プロバイダー] を選択します。
- [OpenID Connect] を選択します。
- 次のように、OIDC プロバイダの詳細に Auth0 アプリの詳細を入力します。
[プロバイダー名] には、名前を入力します (たとえば、Auth0-LinkedIn)。この名前は Amazon Cognito でホストされているウェブ UI に表示されます。
注: プロバイダーを作成した後でこのフィールドを変更することはできません。
[クライアント ID] には、Auth0 アプリケーションから先にコピーした [クライアント ID] を入力します。
[クライアントシークレット (オプション)] には、Auth0 アプリケーションから先にコピーしたクライアントシークレットを入力します。
[Attributes request method] の設定は、[GET] のままにしてください。
[認証範囲] には、openid プロファイル E メールを入力します。
[発行者] には、Auth0 プロファイルの URL を入力します。たとえば、https://tenantName.auth0.com で、tenantName の部分を Auth0 テナント名 に置き換えます。
[識別子 (オプション)] には、OIDC プロバイダの名前の代わりに、エンドポイント URL で後で使用するカスタム文字列をオプションで入力できます。 - Auth0 の OIDC 設定エンドポイントを取得するには、[ディスカバリーの実行] を選択します。
- [Create provider] (プロバイダーを作成) を選択します。
詳細については、ユーザープールに OIDC IdP を追加するを参照してください。
ユーザープールのアプリケーションクライアント設定を変更する
- Amazon Cognito コンソールのユーザープールの管理ページの [App integration] (アプリの統合) で、[App client settings] (アプリクライアントの設定) を選択します。
- アプリクライアントページで、次の操作を行います。
[有効な 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] チェックボックスをオンにします。 - [Save Changes] (変更を保存) を選択します。
詳細については、アプリケーションクライアントの設定用語を参照してください。
Auth0 からユーザープールへの属性のマッピング
- ユーザープールの [Amazon Cognito コンソール] 管理ページの [フェデレーション] で、[属性マッピング] を選択します。
- 属性マッピングページで、[OIDC] タブを選択します。
- ユーザープールに複数の OIDC プロバイダーがある場合は、ドロップダウンリストから新しいプロバイダーを選択します。
- OIDC 属性の [sub] がユーザープール属性の [Username] にマップされていることを確認します。
- [OIDC 属性の追加] を選択します。新しい OIDC 属性には、E メールを入力します。[ユーザープール属性] には、[E メール] を選択します。
- (オプション) Auth0 から渡したい追加の OIDC 属性を追加します。たとえば、given_name と family_name を対応する Amazon Cognito ユーザープール属性にマッピングできます。
注: Auth0 ユーザーに保存されているすべての OIDC 属性を表示するには、[Auth0 ウェブサイトダッシュボード] の左側のナビゲーションペインで、[ユーザーとロール] をクリックし、 [ユーザー] を選択します。ユーザーを選択してから、[Raw JSON] をクリックします。
詳細については、ユーザープールのアイデンティティプロバイダー属性マッピングを指定するを参照してください。
エンドポイント URL を構築する
独自の設定の値を使用して、次のエンドポイント URL を作成してください。
https://yourDomainPrefix.auth.region.amazoncognito.com/oauth2/authorize?response_type=code&client_id=yourClientId&redirect_uri=redirectUrl
設定に合わせて URL をカスタマイズするには、次の手順を実行してください。
- yourDomainPrefix と region をユーザープールの値に置き換えます。ユーザープールの管理ページの [ドメイン名] タブの [Amazon Cognito コンソール] でそれらが見つかります。
- 許可された OAuth フローに対して以前に黙示的な付与フローのみを選択した場合は、response_type=code を response_type=token に変更します。
- yourClientId をアプリケーションクライアントの ID に置き換え、redirectUrl をアプリケーションクライアントのコールバック URL に置き換えます。ユーザープールの管理ページの [アプリクライアント設定] タブにある [Amazon Cognito コンソール] でそれらが見つかります。
詳細については、「Amazon Cognito のホストされたウェブの UI を設定する方法を教えてください」および「認証エンドポイント」を参照してください。
エンドポイント URL をテストする
- 作成したエンドポイント URL をウェブブラウザに入力します。
- [コーポレート ID でサインイン] の下で、OIDC プロバイダーの名前を選択します (たとえば、Auth0-LinkedIn)。Auth0 アプリケーションのログインページにリダイレクトされます。
- [LinkedIn でログイン] を選択します。LinkedIn のサインインページにリダイレクトされます。
注: 代わりに Amazon Cognito アプリクライアントのコールバック URL にリダイレクトされている場合は、既に LinkedIn にサインインしていることになります。 - LinkedIn サインインページで、LinkedIn アカウントの E メールアドレス (または電話番号) とパスワードを入力します。
- [サインイン] を選択します。
ログインに成功すると、アプリクライアントのコールバック 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 をカスタマイズするには、次の手順を実行してください。
- yourDomainPrefix と region をユーザープールの値に置き換えます。ユーザープールの管理ページの [ドメイン名] タブの [Amazon Cognito コンソール] でそれらが見つかります。
- 許可された OAuth フローに対して以前に黙示的な付与フローのみを選択した場合は、response_type=code を response_type=token に変更します。
- oidcProviderName をユーザープールの OIDC プロバイダーの名前に置き換えます。たとえば、Auth0-LinkedIn です。
- (オプション) [識別子 (オプション)] フィールドで OIDC プロバイダの識別子を追加した場合は、identity_provider=oidcProviderName を **idp_identifier=**idpIdentifier に置き換え、idpIdentifier をカスタムの識別子文字列に置き換えることができます。
- yourClientId をアプリケーションクライアントの ID に置き換え、redirectUrl をアプリケーションクライアントのコールバック URL に置き換えます。ユーザープールの管理ページの [アプリクライアント設定] タブにある [Amazon Cognito コンソール] でそれらが見つかります。
- allowedOauthScopes を、Amazon Cognito アプリクライアントにリクエストさせたい特定のスコープに置き換えます。
関連情報
Amazon Cognito ユーザープールを使用して、SAML ID プロバイダーとして Auth0 を設定するにはどうすればよいですか?

関連するコンテンツ
- 質問済み 5年前lg...
- 質問済み 5年前lg...
- 質問済み 5年前lg...
- 質問済み 1ヶ月前lg...