Okta を Amazon Cognito ユーザープールの OpenID Connect ID プロバイダーとして設定する方法を教えてください。

最終更新日: 2019 年 12 月 20 日

Okta を Amazon Cognito ユーザープールの OpenID Connect (OIDC) ID プロバイダー (IdP) として使用したいと考えています。セットアップするにはどうすればよいですか?

簡単な説明

Amazon Cognito ユーザープールでは、Okta などの IdP を含む、サードパーティー (フェデレーション) を介したサインインが可能です。詳細については、 「サードパーティー経由のユーザープールへのサインインの追加」および「ユーザープールへの OIDC ID プロバイダーの追加」を参照してください。

Okta と一体化したユーザープールにより、Okta アプリのユーザーは、Amazon Cognito からユーザープールトークンを取得することが可能です。詳細については、「ユーザープールのトークンの使用」を参照してください。

解決方法

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

  1. ユーザープールを作成します
    注意: 作成時には、標準属性として E メール がデフォルトで選択されます。詳細については、「ユーザープールの属性の設定」を参照してください。
  2. ユーザープールでアプリクライアントを作成します。詳細については、「アプリケーションを追加して、ホストされたウェブの UI を有効にする」を参照してください。
  3. ユーザープールのドメイン名を追加します

Okta 開発者アカウントにサインアップする

注意: Okta 開発者アカウントをすでにお持ちの場合は、サインインしてください。

  1. [Okta Developer signup webpage] で、個人情報を入力し、 [GET STARTED] を選択します。Okta 開発者チームから、指定された E メールアドレスに確認メールが送信されます。
  2. 確認 E メールで、アカウントのサインイン情報を確認します。[ACTIVATE MY ACCOUNT] を選択してサインインし、アカウントの作成を完了します。

Okta アプリの作成

  1. Okta 開発者コンソールを開きます。コンソールの詳細については、Okta 開発者ブログの「The Okta Developer Console: All New, All You」を参照してください。
  2. 左上隅の開発者コンソールで、[Classic UI] を選択します。管理コンソールが開きます。詳細については、Okta 開発者ウェブサイトの Okta Organizations ページの Administrator Console を参照してください。
  3. [Shortcuts] で、[Add Applications] を選択します。または [Applications]、[Add Application] の順に選択します。
  4. [Add Application] ページで、[Create New App] を選択します。
  5. [Create a New Application Integration] ダイアログで、[Platform] が [Web] に設定されていることを確認します。
  6. [Sign on method]で、[OpenID Connect] を選択します。
  7. [Create] を選択します。

Okta アプリの設定を構成する

  1. [Create OpenID Connect Integration] ページで、[GENERAL SETTINGS] で、アプリの名前を入力します。例えば、[TestApp] です。
  2. (オプション) ロゴをアップロードし、アプリの可視性設定を選択します。
  3. [CONFIGURE OPENID CONNECT] の [Login redirect URIs] に https://myUserPoolDomain/oauth2/idpresponseと入力します。これは、Okta が認証レスポンスと ID トークンを送信する場所です。
    注意: [myUserPoolDomain] は、Amazon Cognito ユーザープールドメインに置き換えてください。これらの値は、ユーザープールの [Domain name] ページの [Amazon Cognito console] で確認できます。
  4. [Save] をクリックします。Okta アプリの [General] タブにリダイレクトされます。
  5. [General Settings] の [Allowed grant types] で、 [Authorization Code] チェックボックスが選択されていることを確認します。ユーザープールはこのフローを使用して Okta OIDC と通信し、フェデレーティッドユーザーサインインを行います。
  6. [Client Credentials] で、[Client ID] と [Client secret] を確認し、書き留めます。これらは、Amazon Cognito ユーザープールで Okta を設定するときに必要になります。詳細については、Okta 開発者ウェブサイトの「Find your application credentials」ガイドを参照してください。
  7. [Sign On] を選択します。
  8. [Sign On] タブの [OpenID Connect ID Token] で、[Issuer] の URL を書き留めます。これは、後でユーザープールで Okta を設定するときにも必要になります。

ユーザープールに OIDC IdP を追加する

  1. [Amazon Cognito コンソール] で、[Manage user pools] を選択し、ユーザープールを選択します。
  2. 左のナビゲーションペインの [Federation] の下で、[Identity providers] を選択します。
  3. [OpenID Connect] を選択します。
  4. 以下の操作を実行します。
    [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 で後で使用するカスタム文字列を入力できます。
  5. Okta の OIDC 設定エンドポイントを取得するには、[Run discovery] を選択します。
  6. [Create provider] を選択します。

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

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

  1. [Amazon Cognito コンソール] で、[Manage user pools] を選択し、ユーザープールを選択します。
  2. 左側のナビゲーションペインで、[App integration] の下にある [App client settings] を選択します。
  3. アプリクライアントページで、次の操作を行います。
    [Enabled Identity Providers] で、OIDC プロバイダーと [Cognito User Pool] のチェックボックスを選択します。
    [Callback URL(s)] には、ログイン後にユーザーをリダイレクトする URL を入力します。テスト用に、https://example.com/ のように有効な URL を入力できます。
    [ログアウト URL] には、ログアウト後にユーザーをリダイレクトする URL を入力します。テスト用に、https://example.com/ のように有効な URL を入力できます。
    [Allowed OAuth Flows] で、Okta アプリで前に選択した許可タイプに対応するフローを選択します。
    注: [エンドポイント URL ] のパラメータである [response_type ] でどちらの値 (コード または トークン) を使用できるかは、許可された OAuth フローに応じて決まります。
    [Allowed OAuth Scopes] の下で、[E メール] と [openid] チェックボックスは必ず選択します。
  4. [変更の保存] を選択します。

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

E メール属性をユーザープール属性にマッピングする

[email] OIDC スコープ値を以前に承認した場合は、それをユーザープール属性にマッピングします。

  1. [Amazon Cognito コンソール] で、[Manage user pools] を選択し、ユーザープールを選択します。
  2. 左のナビゲーションペインの [Federation] の下で、[Attribute mapping] を選択します。
  3. 属性マッピングページで、[OIDC] タブを選択します。
  4. ユーザープールに複数の OIDC プロバイダーがある場合は、ドロップダウンリストから新しいプロバイダーを選択します。
  5. OIDC 属性の [sub] がユーザープール属性の [Username] にマップされていることを確認します。
  6. [Add OIDC attribute] を選択し、次の操作を行います。
    [OIDC attribute] では、[email] を入力します。
    [User pool attribute] では、[Email] を選択します。

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

ログインしてセットアップをテストする

[Amazon Cognito hosted web UI] を使用して、Okta で認証します。ログインに成功すると、アプリクライアントのコールバック URL にリダイレクトされます。認証コードまたはユーザープールトークンは、ウェブブラウザのアドレスバーの URL に表示されます。

詳細については、「サインアップおよびサインインに Amazon Cognito のホストされた UI を使用する」を参照してください。