Amazon Cognito ユーザープールで Okta を SAML ID プロバイダーとして設定するにはどうしたらいいですか?
最終更新日: 2020 年 9 月 3 日
Amazon Cognito ユーザープールで、Security Assertion Markup Language 2.0 (SAML 2.0) ID プロバイダー (IdP) として Okta を使いたいです。セットアップ方法を教えてください。
簡単な説明
Amazon Cognito ユーザープールでは、Okta などの IdP を含む、サードパーティー (フェデレーション) を介したサインインが可能です。詳細については、サードパーティーを介したユーザープールサインインの追加およびユーザープールへの SAML ID プロバイダーの追加を参照してください。
Okta と一体化したユーザープールにより、Okta アプリのユーザーは、Amazon Cognito からユーザープールトークンを取得することが可能です。詳細については、ユーザープールのトークンの使用を参照してください。
解決方法
アプリクライアントおよびドメイン名を持つ Amazon Cognito ユーザープールを作成する
- ユーザープールを作成します。
注意: 作成時には、標準属性として E メール がデフォルトで選択されます。詳細については、ユーザープールの属性の設定を参照してください。 - ユーザープールでアプリクライアントを作成します。詳細については、アプリケーションを追加して、ホストされたウェブの UI を有効にするを参照してください。
注意: アプリクライアントを追加する場合、クライアントシークレットの生成チェックボックスをオフにします。認証コードの付与フローやトークン更新フローなどの特定の認証フローでは、認証サーバーはアプリクライアントシークレットを使用して、ユーザーに代わってリクエストを行うことをクライアントに許可します。この設定で使用されている黙示的な付与フローでは、アプリクライアントシークレットは必要ありません。 - ユーザープールのドメイン名を追加します。
Okta デベロッパーアカウントにサインアップする
注意: Okta デベロッパーアカウントをすでにお持ちの場合は、サインインしてください。
- [Okta Developer signup webpage] (Okta デベロッパーサインアップウェブページ) で、必須情報を入力し、 [GET STARTED] を選択します。Okta デベロッパーチームから、指定された E メールアドレスに確認メールが送信されます。
- 確認 E メールで、アカウントのサインイン情報を確認します。ACTIVATE MY ACCOUNT を選択してサインインし、アカウントの作成を完了します。
Okta で SAML アプリを作成する
- Okta デベロッパーコンソールを開きます。コンソールの詳細については、Okta デベロッパーブログの The Okta Developer Console: All New, All You を参照してください。
- 左上隅のデベロッパーコンソールで、[Classic UI] (クラシック UI) を選択します。管理コンソールが開きます。詳細については、Okta デベロッパーウェブサイトの Okta 組織ページの管理者コンソールを参照してください。
重要: SAML アプリを作成するには、管理コンソール (クラシック UI) を使用する必要があります。 - [Shortcuts] (ショートカット) で、[Add Applications] (アプリケーションを追加) を選択します。
--または-- [Applications] (アプリケーション)、[Add Application] (アプリケーションの追加) の順に選択します。 - [Add Application] (アプリケーションを追加) ページで、[Create New App] (新しいアプリを作成) を選択します。
- 新しいアプリケーション統合を作成するのダイアログで、プラットフォームがウェブに設定されていることを確認します。
- サインオン方法では、SAML 2.0 を選択します。
- [Create] (作成) をクリックします。
詳細については、Okta デベロッパーウェブサイトの Build a Single Sign-On (SSO) Integration ガイドの Prepare your integration を参照してください。
Okta アプリの SAML Integration を設定する
- SAML Integration の統合を作成ページの全般設定で、アプリケーションの名前を入力します。
- (オプション) ロゴをアップロードし、アプリの可視性設定を選択します。
- 次へを選択します。
- 全般で、シングルサインオン URL にhttps://yourDomainPrefix.auth.region.amazoncognito.com/saml2/idpresponse を入力します。
注意: yourDomainPrefix とリージョンは、ユーザープールの値に置き換えてください。それらの値は、Amazon Cognito コンソール の [Domain name] (ドメイン名) ページで確認できます。 - [Audience URI (SP Entity ID)] (対象 URI (SP エンティティ ID)) には、urn:amazon:cognito:sp:yourUserPoolId と入力します。
注意: Amazon Cognito のユーザープール ID で yourUserPoolId を置き換えます。この値は、Amazon Cognito コンソールで、ユーザープールの [General settings] (全般設定) ページで確認できます。 - [ATTRIBUTE STATEMENTS (OPTIONAL)] (属性ステートメント (オプション)) で、次の情報を含むステートメントを追加します。
名前には、http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress として SAML 属性名を入力します。
値には、user.email を入力します。 - ページ上のその他の設定については、デフォルト値のままにするか、必要に応じて設定を変更します。
- 次へを選択します。
- Okta サポートへのフィードバック回答を選択します。
- [Finish] (完了) を選択します。
詳細については、Okta デベロッパーウェブサイトの Build a Single Sign-On (SSO) Integration ガイドの Create your integration を参照してください。
Okta アプリケーションにユーザーを割り当てる
- Okta アプリの [Assignments] (割り当て) タブの [Assign] (割り当て) で、[Assign to People] (ユーザーへの割り当て) を選択します。
- 割り当てたいユーザーの横にある [Assign] (割り当て) を選択します。
注意: これが新規アカウントの場合、利用可能な唯一のオプションは、ユーザーとして自分 (管理者) を選択することです。 - (オプション) ユーザー名には、必要に応じてユーザー名を入力するか、ユーザーの電子メールアドレスのままにします。
- 保存して戻るを選択します。ユーザーが割り当てられます。
- [Done] (完了) をクリックします。
詳細については、Okta デベロッパーウェブサイトの Build a Single Sign-On (SSO) Integration ガイドの Assign users を参照してください。
Okta アプリケーションの IdP メタデータを取得する
Okta アプリのサインオンタブで、ID プロバイダーメタデータのハイパーリンクを見つけます。ハイパーリンクを右クリックして URL をコピーします。
詳細については、Okta デベロッパーウェブサイトの Build a Single Sign-On (SSO) Integration ガイドの Specify your integration settings を参照してください。
Okta をユーザープールで SAML IdP として設定する
- Amazon Cognito コンソールで、ユーザープールを管理を選択し、ユーザープールを選択します。
- 左のナビゲーションペインのフェデレーションの下で、プロバイダーを特定を選択します。
- SAML を選択します。
- メタデータドキュメントに、コピーした ID プロバイダーメタデータの URL を貼り付けます。
- プロバイダー名に Okta と入力します。詳細については、SAML ID プロバイダー名の選択を参照してください。
- (オプション) ユーザーがユーザープールからサインアウトするときに、SAML ID (Identifiers (Optional)) を入力し、IdP (Okta) からのサインアウトを有効にします (IdP サインアウトフローを有効にする)。
- [Create provider] (プロバイダーを作成) を選択します。
詳細については、ユーザープール用の SAML ID プロバイダーの作成と管理 (AWS マネジメントコンソール) を参照してください。
IdP 属性からユーザープール属性に電子メールアドレスをマッピングする
- Amazon Cognito コンソールで、ユーザープールを管理を選択し、ユーザープールを選択します。
- 左のナビゲーションペインのフェデレーションの下で、属性マッピングを選択します。
- 属性マッピングページで、SAMLタブを選択します。
- SAML 属性を追加を選択します。
- SAML 属性名を追加する場合、SAML 属性に http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress と入力します。
- [User pool attribute] (ユーザープール属性) には、リストから [Email] (E メール) を選択します。
詳細については、ユーザープールの ID プロバイダー属性マッピングを指定するを参照してください。
ユーザープールのアプリクライアント設定を変更する
- [Amazon Cognito コンソール] で、[ユーザープールを管理] を選択し、ユーザープールを選択します。
- 左側のナビゲーションペインで、[App integration] の下にある [App client settings] を選択します。
- アプリクライアントページで、次の操作を行います。
有効な ID プロバイダーで、Okta と Cognito ユーザープール のチェックボックスをオンにします。
コールバック URL には、ログイン後にユーザーをリダイレクトする URL を入力します。テストを行う場合には、https://www.example.com/ のような、任意の有効な URL を入力してください。
サインアウト URL には、ログアウト後にユーザーをリダイレクトする URL を入力します。テストを行う場合には、https://www.example.com/ のような、任意の有効な URL を入力してください。
OAuth フローを許可で必ず暗黙的な付与チェックボックスをオンにします。
[Allowed OAuth Scopes] で必ず [email] および [openid] チェックボックスをオンにしてください。 - [Save changes] (変更を保存) を選択します。
詳細については、アプリクライアント設定の概要を参照してください。
エンドポイント URL を作成する
ユーザープールの値を使用して、次のログインエンドポイント URL を作成します。
https://yourDomainPrefix.auth.region.amazoncognito.com/login?response_type=token&client_id=yourClientId&redirect_uri=redirectUrl
必ず以下を実行してください。
- yourDomainPrefix と region をユーザープールの値に置き換えます。それらの値は、Amazon Cognito コンソールの [Domain name] (ドメイン名) ページで確認できます。
- yourClientId をアプリケーションクライアントの ID に置き換え、redirectUrl をアプリケーションクライアントのコールバック URL に置き換えます。これらの値は、Amazon Cognito コンソールで、ユーザープールの [App client settings] (アプリクライアントの設定) ページで確認できます。
詳細については、Amazon Cognito のホストされたウェブ UI 設定および ログインエンドポイントを参照してください。
エンドポイント URL をテストする
- 作成したログインエンドポイント URL をウェブブラウザに入力します。
- ログインエンドポイントのウェブページで、Okta を選択します。
注 : アプリクライアントのコールバック URL にリダイレクトされている場合、ブラウザで Okta アカウントにすでにサインインしています。ウェブブラウザのアドレスバーの URL にユーザープールトークンが表示されます。 - Okta サインインページで、アプリに割り当てたユーザーのユーザー名とパスワードを入力します。
- サインインを選択します。
ログイン後、アプリクライアントのコールバック 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
必ず以下を実行してください。
- yourDomainPrefix と region をユーザープールの値に置き換えます。それらの値は、Amazon Cognito コンソールの [Domain name] (ドメイン名) ページで確認できます。
- samlProviderName を、ユーザープールの SAML プロバイダー名 (Okta) に置き換えます。
- (オプション) 識別子 (オプション) フィールドで SAML IdP の識別子を追加した場合は、identity_provider=samlProviderName を idp_identifier=idpIdentifier に置き換え、idpIdentifier をカスタムの識別子文字列に置き換えることができます。
- yourClientId をアプリケーションクライアントの ID に置き換え、redirectUrl をアプリケーションクライアントのコールバック URL に置き換えます。これらの値は、Amazon Cognito コンソールで、ユーザープールの [App client settings] (アプリクライアントの設定) ページで確認できます。
- allowedOauthScopes を、Amazon Cognito アプリクライアントにリクエストさせたい特定のスコープに置き換えます。たとえば、scope=email+openid です。
詳細については、Amazon Cognito のホストされたウェブ UI を設定する方法を教えてくださいおよび認証エンドポイントを参照してください。