Amazon Cognito ユーザープールで Okta を OpenID Connect アイデンティティプロバイダーとして設定するにはどうすればよいですか?
最終更新日: 2021 年 9 月 21 日
Okta を Amazon Cognito ユーザープールの OpenID Connect (OIDC) アイデンティティプロバイダー (IdP) として使用したいと考えています。設定するにはどうすればよいですか?
簡単な説明
Amazon Cognito ユーザープールでは、Okta などの IdP を含む、サードパーティー (フェデレーション) を介したサインインが可能です。詳細については、サードパーティー経由のユーザープールへのサインインの追加およびユーザープールへの OIDC アイデンティティプロバイダーの追加を参照してください。
Okta と統合されたユーザープールにより、Okta アプリケーションのユーザーは、Amazon Cognito からユーザープールトークンを取得することが可能です。詳細については、ユーザープールのトークンの使用を参照してください。
解決方法
アプリケーションクライアントとドメイン名を使用して Amazon Cognito ユーザープールを作成する
- ユーザープールを作成します。
注意: 作成時には、標準属性として E メール がデフォルトで選択されます。詳細については、ユーザープールの属性の設定を参照してください。 - ユーザープールでアプリクライアントを作成します。詳細については、アプリケーションを追加して、ホストされたウェブの UI を有効にするを参照してください。
- ユーザープールのドメイン名を追加します。
Okta デベロッパーアカウントにサインアップする
注: Okta デベロッパーアカウントを既にお持ちの場合は、サインインしてください。
- Okta Developer サインアップウェブページで、個人情報を入力し、[SIGN UP] (サインアップ) を選択します。Okta Developer チームから、指定された E メールアドレスに確認メールが送信されます。
- 確認 E メールで、アカウントのサインイン情報を確認します。[ACTIVATE] (アクティブ化) を選択してサインインし、アカウントの作成を完了します。
Okta アプリケーションを作成する
- Okta Developer コンソールを開きます。コンソールの詳細については、Okta Developer Blog の Okta’s Redesigned Admin Console and Dashboard—Now in GA! を参照してください。
- ナビゲーションペインで、[Applications] (アプリケーション) を展開し、[Applications] (アプリケーション) を選択します。アプリケーションコンソールが開きます。詳細については、Okta Developer ウェブサイトの Okta Organizations の Administrator Console を参照してください。
- [Create App Integration] (アプリケーション統合を作成) を選択します。
- [Create a new app integration] (新しいアプリ統合を作成) ページで、[OpenID Connect] を選択し、[Web Application] (ウェブアプリケーション)、[Next] (次へ) の順に選択します。
Okta アプリケーションの設定を構成する
- [New Web App Integration] (新しいウェブアプリケーション統合) ページの [General Settings] (全般設定) で、アプリケーションの名前を入力します。例えば、TestApp です。
- [Grant type] (許可の種類) で、[Authorization Code] (認証コード) チェックボックスがオンになっていることを確認します。ユーザープールは、このフローを使用して、フェデレーティッドユーザーのサインインのために Okta OIDC と通信します。
- [Sign-in redirect URIs] (サインインリダイレクト URI) で、https://myUserPoolDomain/oauth2/idpresponse と入力します。これは、Okta が認証レスポンスと ID トークンを送信する場所です。
注: myUserPoolDomain を Amazon Cognito ユーザープールドメインに置き換えてください。ドメインは、Amazon Cognito コンソールのユーザープールの [Domain name] (ドメイン名) ページにあります。 - [CONFIGURE OPENID CONNECT] の [Login redirect URIs] (ログインリダイレクト URL) で、https://myUserPoolDomain/oauth2/idpresponse と入力します。これは、Okta が認証レスポンスと ID トークンを送信する場所です。
注: myUserPoolDomain を Amazon Cognito ユーザープールドメインに置き換えてください。Amazon Cognito コンソールで、ユーザープールの [Domain name] (ドメイン名) ページでドメインを検索します。 - [Controlled access] (制御されたアクセス) で、希望するアクセス設定を選択し、[Save] (保存) を選択します。
- [Client Credentials] (クライアントの認証情報) で、[Client ID] (クライアント ID) と [Client secret] (クライアントのシークレット) をコピーします。Amazon Cognito ユーザープールで Okta を設定するには、これらの認証情報が必要です。
- [Sign On] (サインオン) を選択します。
- [Sign On] (サインオン) ページの [OpenID Connect ID Token] (OpenID Connect ID トークン) で、[Issuer] (発行者) URL を書き留めます。この URL は、ユーザープールで Okta を設定するために必要です。
ユーザープールに OIDC IdP を追加する
- Amazon Cognito コンソールで、[Manage user pools] (ユーザープールの管理) を選択し、次にユーザープールを選択します。
- 左のナビゲーションペインの [Federation] の下で、[Identity providers] を選択します。
- [OpenID Connect] を選択します。
- 以下の操作を実行します。
[Provider name] に、IdP の名前を入力します。この名前は [Amazon Cognito hosted web UI] に表示されます。
注: プロバイダーを作成した後でこのフィールドを変更することはできません。このフィールドをアプリに含めるか、Amazon Cognito でホストされているウェブ UI を使用する予定の場合は、アプリのユーザーに見られてもよい名前を付けてください。
[Client ID] に、Okta で先ほど書き留めた [Client ID] を入力します。
[Client secret(optional)] に、Okta で先ほど書き留めた [Client secret] を入力します。
[Attributes request method] の設定は、[GET] のままにしてください。
[Authorize scope] (承認スコープ) で、承認する OIDC スコープの値をスペースで区切って入力します。詳細については、OpenID ウェブサイトの OpenID Connect Basic Client Implementer's Guide 1.0 の Scope values を参照してください。
重要: OIDC IdP には openid スコープが必要です。他のスコープは、ユーザープールの設定に応じて追加できます。例えば、ユーザープールの作成時に必須属性として [email] を保持する場合には、[email openid] と入力して両方のスコープを含めてください。[email] 属性は、このセットアップの後のステップでユーザープールにマッピングできます。
[Issuer] に、Okta から先ほどコピーした [Issuer] の URL を貼り付けます。
[Identifiers (optional)] には、オプションとして OIDC IdPの名前の代わりに、エンドポイント URL で後で使用するカスタム文字列を入力できます。 - Okta の OIDC 設定エンドポイントを取得するには、[Run discovery] を選択します。
- [Create provider] (プロバイダーを作成) を選択します。
詳細については、ユーザープールに OIDC IdP を追加するを参照してください。
ユーザープールのアプリケーションクライアント設定を変更する
- Amazon Cognito コンソールで、[Manage user pools] (ユーザープールの管理) を選択し、次にユーザープールを選択します。
- 左ナビゲーションペインで、[アプリの統合] の [アプリクライアント設定] を選択します。
- アプリケーションクライアントページで、次の手順を実行します。
[Enabled Identity Providers] (有効な ID プロバイダ) で、前に作成した IdP の OIDC プロバイダーのチェックボックスをオンにします。
(オプション) [Cognito User Pool] (Cognito ユーザープール) のチェックボックスをオンにします。
[Callback URL(s)] (コールバック URL) で、ログイン後にユーザーをリダイレクトする URL を入力します。テスト用に、https://example.com/ のように有効な URL を入力できます。
[ログアウト URL] には、ログアウト後にユーザーをリダイレクトする URL を入力します。テスト用に、https://example.com/ のように有効な URL を入力できます。
[Allowed OAuth Flows] (許可されている OAuth フロー) で、Cognito からの認証後にアプリケーションが受け取る許可タイプに対応するフローを選択します。
注: エンドポイント URL の response_type パラメータのためにどちらの値 (コード または トークン) を使用できるかは、有効にした許可済み OAuth フローに応じて決まります。
[Allowed OAuth Scopes] の下で、[E メール] と [openid] チェックボックスは必ず選択します。 - [Save changes] (変更を保存) を選択します。
詳細については、アプリケーションクライアントの設定用語を参照してください。
E メール属性をユーザープール属性にマッピングする
[email] (E メール) OIDC スコープ値を以前に承認した場合は、それをユーザープール属性にマッピングします。
- Amazon Cognito コンソールで、[Manage user pools] (ユーザープールの管理) を選択し、次にユーザープールを選択します。
- 左側のナビゲーションペインの [Federation] (フェデレーション) で、[Attribute mapping] (属性マッピング) を選択します。
- 属性マッピングページで、[OIDC] タブを選択します。
- ユーザープールに複数の OIDC プロバイダーがある場合は、ドロップダウンリストから新しいプロバイダーを選択します。
- OIDC 属性の [sub] がユーザープール属性の [Username] にマップされていることを確認します。
- [Add OIDC attribute] を選択し、次の操作を行います。
[OIDC attribute] では、[email] を入力します。
[User pool attribute] (ユーザープール属性) で、[Email] (E メール) を選択します。
詳細については、ユーザープールのアイデンティティプロバイダー属性マッピングを指定するを参照してください。
ログインしてセットアップをテストする
Amazon Cognito でホストされているウェブ UI を使用して、Okta で認証します。ログインに成功すると、アプリクライアントのコールバック URL にリダイレクトされます。認証コードまたはユーザープールトークンは、ウェブブラウザのアドレスバーの URL に表示されます。
詳細については、サインアップおよびサインインでの Amazon Cognito でホストされる UI の使用を参照してください。