Amazon Cognito ユーザープールで Okta を SAML アイデンティティプロバイダーとして設定するにはどうしたらいいですか?

最終更新日: 2021 年 9 月 27 日

Amazon Cognito ユーザープールで、Security Assertion Markup Language 2.0 (SAML 2.0) アイデンティティプロバイダー (IdP) として Okta を使いたいと考えています。設定するにはどうすればよいですか?

簡単な説明

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

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

解決方法

アプリケーションクライアントとドメイン名を使用して Amazon Cognito ユーザープールを作成する

  1. ユーザープールを作成します
    注意: 作成時には、標準属性として E メール がデフォルトで選択されます。詳細については、ユーザープールの属性の設定を参照してください。
  2. ユーザープールでアプリクライアントを作成します。詳細については、アプリケーションを追加して、ホストされたウェブの UI を有効にするを参照してください。
    注意: アプリクライアントを追加する場合、クライアントシークレットの生成チェックボックスをオフにします。認証コードの付与フローやトークン更新フローなどの特定の認証フローでは、認証サーバーはアプリクライアントシークレットを使用して、ユーザーに代わってリクエストを行うことをクライアントに許可します。この設定で使用されている黙示的な付与フローでは、アプリクライアントシークレットは必要ありません。
  3. ユーザープールのドメイン名を追加します

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

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

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

Okta で SAML アプリを作成する

  1. Okta Developer コンソールを開きます。コンソールの詳細については、Okta’s Redesigned Admin Console and Dashboard を参照してください。
  2. ナビゲーションメニューで、[Applications] (アプリケーション) を展開し、[Applications] (アプリケーション) を選択します。
  3. [Create App Integration] (アプリケーション統合を作成) を選択します。
  4. [Create a new app integration] (新しいアプリケーション統合を作成) メニューで、[Sign-in method] (サインイン方法) として [SAML 2.0] を選択します。
  5. [Next] (次へ) を選択します。

詳細については、Okta Developer ウェブサイトの Build a Single Sign-On (SSO) Integration ガイドの Prepare your integration を参照してください。

Okta アプリの SAML Integration を設定する

  1. [Create SAML Integration] (SAML Integration の統合を作成) ページの [General Settings] (全般設定) で、アプリケーションの名前を入力します。
  2. (オプション) ロゴをアップロードし、アプリの可視性設定を選択します。
  3. 次へを選択します。
  4. 全般で、シングルサインオン URLhttps://yourDomainPrefix.auth.region.amazoncognito.com/saml2/idpresponse を入力します。
    注意: yourDomainPrefixリージョンは、ユーザープールの値に置き換えてください。それらの値は、Amazon Cognito コンソール の [Domain name] (ドメイン名) ページで確認できます。
  5. [Audience URI (SP Entity ID)] (対象 URI (SP エンティティ ID)) には、urn:amazon:cognito:sp:yourUserPoolId と入力します。
    注意: Amazon Cognito のユーザープール ID で yourUserPoolId を置き換えます。この値は、Amazon Cognito コンソールで、ユーザープールの [General settings] (全般設定) ページで確認できます。
  6. [ATTRIBUTE STATEMENTS (OPTIONAL)] (属性ステートメント (オプション)) で、次の情報を含むステートメントを追加します。
    名前には、http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress として SAML 属性名を入力します。
    には、user.email を入力します。
  7. ページ上のその他の設定については、デフォルト値のままにするか、必要に応じて設定を変更します。
  8. 次へを選択します。
  9. Okta サポートへのフィードバック回答を選択します。
  10. [Finish] (完了) を選択します。

詳細については、Okta Developer ウェブサイトの Build a Single Sign-On (SSO) Integration ガイドの Create your integration を参照してください。

Okta アプリケーションにユーザーを割り当てる

  1. Okta アプリケーションの [Assignments] (割り当て) タブの [Assign] (割り当て) で、[Assign to People] (ユーザーへの割り当て) を選択します。
  2. 割り当てたいユーザーの横にある [Assign] (割り当て) を選択します。
    注: これが新規アカウントの場合、利用可能な唯一のオプションは、ユーザーとして自分 (管理者) を選択することです。
  3. (オプション) ユーザー名には、必要に応じてユーザー名を入力するか、ユーザーの電子メールアドレスのままにします。
  4. 保存して戻るを選択します。ユーザーが割り当てられます。
  5. [Done] (完了) をクリックします。

詳細については、Okta Developer ウェブサイトの Build a Single Sign-On (SSO) Integration ガイドの Assign users を参照してください。

Okta アプリケーションの IdP メタデータを取得する

Okta アプリケーションの [Sign On] (サインオン) タブで、[Identity Provider metadata] (アイデンティティプロバイダーメタデータ) のハイパーリンクを見つけます。ハイパーリンクを右クリックして URL をコピーします。

詳細については、Okta Developer ウェブサイトの Build a Single Sign-On (SSO) Integration ガイドの Specify your integration settings を参照してください。

Okta をユーザープールで SAML IdP として設定する

  1. Amazon Cognito コンソールで、[Manage user pools] (ユーザープールの管理) を選択し、次にユーザープールを選択します。
  2. 左のナビゲーションペインのフェデレーションの下で、プロバイダーを特定を選択します。
  3. SAML を選択します。
  4. メタデータドキュメントに、コピーした ID プロバイダーメタデータの URL を貼り付けます。
  5. [Provider name] (プロバイダー名) で、Okta と入力します。詳細については、SAML アイデンティティプロバイダー名の選択を参照してください。
  6. (オプション) ユーザーがユーザープールからサインアウトするときに、SAML 識別子 ([Identifiers (Optional)] (識別子 (オプション)) を入力し、IdP (Okta) からのサインアウトを有効にします ([Enable IdP sign out flow] (IdP サインアウトフローを有効にする))。
  7. [Create provider] (プロバイダーを作成) を選択します。

詳細については、ユーザープールの SAML アイデンティティプロバイダーの作成と管理 (AWS マネジメントコンソール) を参照してください。

E メールアドレスを IdP 属性からユーザープール属性へマッピングする

  1. Amazon Cognito コンソールで、[Manage user pools] (ユーザープールの管理) を選択し、次にユーザープールを選択します。
  2. 左のナビゲーションペインのフェデレーションの下で、属性マッピングを選択します。
  3. 属性マッピングページで、SAMLタブを選択します。
  4. SAML 属性を追加を選択します。
  5. SAML 属性名を追加する場合、SAML 属性http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress と入力します。
  6. [User pool attribute] (ユーザープール属性) には、リストから [Email] (E メール) を選択します。

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

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

  1. Amazon Cognito コンソールで、[Manage user pools] (ユーザープールの管理) を選択し、次にユーザープールを選択します。
  2. 左ナビゲーションペインで、[アプリの統合] の [アプリクライアント設定] を選択します。
  3. アプリクライアントページで、次の操作を行います。
    有効な ID プロバイダーで、OktaCognito ユーザープール のチェックボックスをオンにします。
    コールバック URL には、ログイン後にユーザーをリダイレクトする URL を入力します。テストを行う場合には、https://www.example.com/ のような、任意の有効な URL を入力してください。
    サインアウト URL には、ログアウト後にユーザーをリダイレクトする URL を入力します。テストを行う場合には、https://www.example.com/ のような、任意の有効な URL を入力してください。
    OAuth フローを許可で必ず暗黙的な付与チェックボックスをオンにします。
    [Allowed OAuth Scopes] で必ず [email] および [openid] チェックボックスをオンにしてください。
  4. [Save changes] (変更を保存) を選択します。

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

エンドポイント URL を構築する

ユーザープールの値を使用して、次のログインエンドポイント URL を作成します。

https://yourDomainPrefix.auth.region.amazoncognito.com/login?response_type=token&client_id=yourClientId&redirect_uri=redirectUrl

次のことを必ず行ってください。

  • yourDomainPrefixregion をユーザープールの値に置き換えます。それらの値は、Amazon Cognito コンソールの [Domain name] (ドメイン名) ページで確認できます。
  • yourClientId をアプリケーションクライアントの ID に置き換え、redirectUrl をアプリケーションクライアントのコールバック URL に置き換えます。これらの値は、Amazon Cognito コンソールで、ユーザープールの [App client settings] (アプリクライアントの設定) ページで確認できます。

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

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

  1. 作成したログインエンドポイント URL をウェブブラウザに入力します。
  2. ログインエンドポイントのウェブページで、Okta を選択します。
    注 : アプリクライアントのコールバック URL にリダイレクトされている場合、ブラウザで Okta アカウントにすでにサインインしています。ユーザープールのトークンは、ウェブブラウザのアドレスバーの URL に表示されます。
  3. Okta の [Sign In] (サインイン) ページで、アプリケーションに割り当てたユーザーのユーザー名とパスワードを入力します。
  4. [Sign in] (サインイン) を選択します。

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

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

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

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

必ず以下を実行してください。

  • yourDomainPrefixregion をユーザープールの値に置き換えます。それらの値は、Amazon Cognito コンソールの [Domain name] (ドメイン名) ページで確認できます。
  • samlProviderName を、ユーザープールの SAML プロバイダー名 (Okta) に置き換えます。
  • (オプション) 識別子 (オプション) フィールドで SAML IdP の識別子を追加した場合は、identity_provider=samlProviderNameidp_identifier=idpIdentifier に置き換え、idpIdentifier をカスタムの識別子文字列に置き換えることができます。
  • yourClientId をアプリケーションクライアントの ID に置き換え、redirectUrl をアプリケーションクライアントのコールバック URL に置き換えます。これらの値は、Amazon Cognito コンソールで、ユーザープールの [App client settings] (アプリクライアントの設定) ページで確認できます。
  • allowedOauthScopes を、Amazon Cognito アプリクライアントにリクエストさせたい特定のスコープに置き換えます。たとえば、scope=email+openid です。

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