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 ユーザープールを作成する

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

Okta デベロッパーアカウントにサインアップする

注: Okta デベロッパーアカウントを既にお持ちの場合は、サインインしてください。

  1. Okta Developer サインアップウェブページで、個人情報を入力し、[SIGN UP] (サインアップ) を選択します。Okta Developer チームから、指定された E メールアドレスに確認メールが送信されます。
  2. 確認 E メールで、アカウントのサインイン情報を確認します。[ACTIVATE] (アクティブ化) を選択してサインインし、アカウントの作成を完了します。

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

  1. Okta Developer コンソールを開きます。コンソールの詳細については、Okta Developer Blog の Okta’s Redesigned Admin Console and Dashboard—Now in GA! を参照してください。
  2. ナビゲーションペインで、[Applications] (アプリケーション) を展開し、[Applications] (アプリケーション) を選択します。アプリケーションコンソールが開きます。詳細については、Okta Developer ウェブサイトの Okta OrganizationsAdministrator Console を参照してください。
  3. [Create App Integration] (アプリケーション統合を作成) を選択します。
  4. [Create a new app integration] (新しいアプリ統合を作成) ページで、[OpenID Connect] を選択し、[Web Application] (ウェブアプリケーション)、[Next] (次へ) の順に選択します。

Okta アプリケーションの設定を構成する

  1. [New Web App Integration] (新しいウェブアプリケーション統合) ページの [General Settings] (全般設定) で、アプリケーションの名前を入力します。例えば、TestApp です。
  2. [Grant type] (許可の種類) で、[Authorization Code] (認証コード) チェックボックスがオンになっていることを確認します。ユーザープールは、このフローを使用して、フェデレーティッドユーザーのサインインのために Okta OIDC と通信します。
  3. [Sign-in redirect URIs] (サインインリダイレクト URI) で、https://myUserPoolDomain/oauth2/idpresponse と入力します。これは、Okta が認証レスポンスと ID トークンを送信する場所です。
    注: myUserPoolDomain を Amazon Cognito ユーザープールドメインに置き換えてください。ドメインは、Amazon Cognito コンソールのユーザープールの [Domain name] (ドメイン名) ページにあります。
  4. [CONFIGURE OPENID CONNECT] の [Login redirect URIs] (ログインリダイレクト URL) で、https://myUserPoolDomain/oauth2/idpresponse と入力します。これは、Okta が認証レスポンスと ID トークンを送信する場所です。
    注: myUserPoolDomain を Amazon Cognito ユーザープールドメインに置き換えてください。Amazon Cognito コンソールで、ユーザープールの [Domain name] (ドメイン名) ページでドメインを検索します。
  5. [Controlled access] (制御されたアクセス) で、希望するアクセス設定を選択し、[Save] (保存) を選択します。
  6. [Client Credentials] (クライアントの認証情報) で、[Client ID] (クライアント ID) と [Client secret] (クライアントのシークレット) をコピーします。Amazon Cognito ユーザープールで Okta を設定するには、これらの認証情報が必要です。
  7. [Sign On] (サインオン) を選択します。
  8. [Sign On] (サインオン) ページの [OpenID Connect ID Token] (OpenID Connect ID トークン) で、[Issuer] (発行者) URL を書き留めます。この 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.0Scope 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. 左ナビゲーションペインで、[アプリの統合] の [アプリクライアント設定] を選択します。
  3. アプリケーションクライアントページで、次の手順を実行します。
    [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 からの認証後にアプリケーションが受け取る許可タイプに対応するフローを選択します。
    注: エンドポイント URLresponse_type パラメータのためにどちらの値 (コード または トークン) を使用できるかは、有効にした許可済み OAuth フローに応じて決まります。
    [Allowed OAuth Scopes] の下で、[E メール] と [openid] チェックボックスは必ず選択します。
  4. [Save changes] (変更を保存) を選択します。

詳細については、アプリケーションクライアントの設定用語を参照してください。

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

[email] (E メール) 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] (E メール) を選択します。

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

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

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

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