ユーザープールでの OIDC ID プロバイダーの使用
ユーザーは、OpenID Connect (OIDC) ID プロバイダー (IdP) の既存アカウントを使用してアプリケーションにサインインできます。OIDC プロバイダーを使用すると、独立したシングルサインオンシステムのユーザーは、アプリケーションがユーザープールの共有形式で OIDC トークンを受信する間、既存の認証情報を提供できます。ユーザープールは OIDC IdP であり、複数の外部 OIDC IdP とアプリケーション間における中間の依拠しているパーティーとしても機能します。
OIDC IdP でサインインするユーザーは、ユーザープールアプリケーションにアクセスするために、新しい認証情報や情報を提供する必要はありません。アプリケーションは、ユーザープールを使用して、サインインのために IdP にサイレントにリダイレクトできます。この場合、ユーザープールは、アプリケーションのトークン形式を標準化するバックグラウンドのツールとして使用されます。IdP リダイレクトの詳細については、「認可エンドポイント」を参照してください。
他のサードパーティー ID プロバイダーと同様に、アプリケーションを OIDC プロバイダーに登録し、ユーザープールに接続する IdP アプリケーションに関する情報を取得する必要があります。ユーザープール OIDC IdP には、クライアント ID、クライアントシークレット、リクエストするスコープ、プロバイダーサービスエンドポイントに関する情報が必要です。ユーザープールが検出エンドポイントからプロバイダーの OIDC エンドポイントを検出すできますが、ユーザーが手動で入力することもできます。また、プロバイダー ID トークンを調べ、IdP とユーザープール内の属性に関して属性マッピングを作成する必要があります。

注記
サードパーティー (フェデレーション) 経由のサインインは、Amazon Cognito のユーザープールで使用できます。この機能は、Amazon Cognito アイデンティティプールを使用した OIDC フェデレーションとは無関係です。
OIDC IdP の AWS Management Console のユーザープールへの追加は、AWS CLI を介して、またはユーザープール API メソッドの CreateIdentityProvider を使用して実行できます。
トピック
前提条件
開始するには、以下が必要です。
-
アプリケーションクライアントとユーザープールドメインを使用するユーザープール。詳細については、「ユーザープールの作成」を参照してください。
-
次の設定を持つ OIDC IdP。
-
client_secret_post
クライアント認証をサポートします。Amazon Cognito は、IdP の OIDC ディスカバリエンドポイントでのtoken_endpoint_auth_methods_supported
クレームをチェックしません。Amazon Cognito は、client_secret_basic
クライアント認証をサポートしていません。クライアント認証の詳細については、OpenID Connect ドキュメントの「クライアント認証」を参照してください。 -
openid_configuration
、userInfo
、およびjwks_uri
などの OIDC エンドポイントにのみ HTTPS を使用します。 -
OIDC エンドポイントには TCP ポート 80 および 443 のみを使用します。
-
HMAC-SHA、ECDSA または RSA アルゴリズムで ID トークンにのみ署名します。
-
キー ID
kid
クレームをjwks_uri
で発行し、そのトークンにkid
クレームをフックみます。 -
有効なルート CA トラストチェーンを持つ、有効期限が切れていないパブリックキーを表示します。
-
ステップ 1: OIDC IdP に登録する
Amazon Cognito で OIDC IdP を作成する前に、アプリケーションを OIDC IdP に登録して、クライアント ID とクライアントシークレットを取得する必要があります。
OIDC IdP に登録する
-
OIDC IdP のデベロッパーアカウントを作成します。
OIDC IdP へのリンク OIDC IdP インストール方法 OIDC 検出 URL Salesforce https://login.salesforce.com
Ping Identity https://
Ping ドメインアドレス
:9031/idp/userinfo.openid例:
https://pf.company.com:9031/idp/userinfo.openid
Okta https://
Okta サブドメイン
.oktapreview.comまたは
https://
Your Okta subdomain
.okta.comMicrosoft Azure Active Directory (Azure AD) https://login.microsoftonline.com/
{tenant}
/v2.0Google https://accounts.google.com
注記
Amazon Cognito では、Google を統合されたソーシャルサインイン IdP として提供します。統合された IdP を使用することをお勧めします。「ユーザープールによるソーシャル ID プロバイダーの使用」を参照してください。
-
OIDC IdP を使用して、
/oauth2/idpresponse
エンドポイントを持つユーザープールドメインを登録します。そうすることで、OIDC IdP が後ほど、ユーザーの認証時に Amazon Cognito からこれを受け入れることが確実になります。https://
mydomain.us-east-1.amazoncognito.com
/oauth2/idpresponse -
コールバック URL を Amazon Cognito ユーザープールに登録します。これは、認証が成功した後で Amazon Cognito がユーザーをリダイレクトするページの URL です。
https://
www.example.com
-
スコープ
を選択します。スコープ openid が必要です。email および email_verified クレームにアクセスを付与するには、email スコープが必要です。 -
OIDC IdP は、クライアント ID とクライアントシークレットを提供します。これらは、ユーザープールで OIDC IdP を設定するときに使用します。
例: Salesforce を OIDC IdP としてユーザープールで使用する
OIDC 互換 IdP (Salesforce など) とユーザープールの間で信頼性を確立するときに OIDC IdP を使用します。
-
Salesforce 開発者ウェブサイトでアカウントを作成
します。 -
前のステップで設定した開発者アカウントを使用してサインイン
します。 -
Salesforce ページで、次のいずれかの操作を行います。
-
Lightning Experience を使用している場合は、歯車アイコンを選択してから、[Setup Home] (ホームの設定) を選択します。
-
Salesforce Classic を使用しており、ユーザーインターフェイスのヘッダーに [Setup (設定)] が表示されている場合は、選択します。
-
Salesforce Classic を使用しており、ヘッダーに [Setup (設定)] が表示されていない場合は、上部のナビゲーションバーで名前を選択し、ドロップダウンリストより [Setup (設定)] を選択します。
-
-
左のナビゲーションバーで、[Company Settings (組織の設定)] を選択します。
-
ナビゲーションバーで、[Domain] (ドメイン) を選択してドメインを入力し、[Create] (作成) を入力します。
-
左のナビゲーションバーで、[Platform Tools] (プラットフォームツール) に移動し、[Apps] (アプリケーション) を選択します。
-
[アプリケーションマネージャ] を選択します。
-
-
[New connected app] (新規接続アプリケーション) を選択します。
-
必須フィールドに入力します。
[Start URL] (開始 URL) で、Salesforce IdP でサインインするユーザープールドメインの
/authorize
エンドポイントの URL を入力します。ユーザーが接続アプリケーションにアクセスすると、Salesforce はこの URL に誘導してサインインを完了します。次に、Salesforce はユーザーをアプリクライアントに関連付けたコールバック URL にリダイレクトします。https://
mydomain.us-east-1.amazoncognito.com
/authorize?response_type=code&client_id=<your_client_id>
&redirect_uri=https://www.example.com
&identity_provider=CorpSalesforce
-
OAuth 設定を有効にし、コールバック URL にユーザープールドメインの
/oauth2/idpresponse
エンドポイントの URL を入力します。これは、Amazon Cognito が OAuth トークンと交換する認可コードを Salesforce が発行する URL です。https://
mydomain.us-east-1.amazoncognito.com
/oauth2/idpresponse
-
-
スコープ
を選択します。スコープ openid を含める必要があります。email および email_verified クレーム にアクセスを付与するには、email スコープが必要です。スコープはスペースで区切ります。 -
[Create] (作成) を選択します。
Salesforce では、クライアント ID は [コンシューマーキー]、クライアントシークレットは [コンシューマーシークレット] と呼ばれます。クライアント ID とクライアントシークレットを書き留めます。これらは次のセクションで使用します。
ステップ 2: ユーザープールに OIDC IdP を追加する
このセクションでは、OIDC IdP からの OIDC ベースの認証リクエストを処理するようにユーザープールを設定します。
OIDC IdP を追加する (Amazon Cognito コンソール)
OIDC IdP を追加する
-
Amazon Cognito コンソール
に移動します。プロンプトが表示されたら、AWS 認証情報を入力します。 -
ナビゲーションメニューから [User Pools] (ユーザープール) を選択します。
-
リストから既存のユーザープールを選択するか、ユーザープールを作成します。
-
[Sign-in experience] (サインインエクスペリエンス) タブを選択します。[Federated sign-in] (フェデレーションサインイン) を検索し、[Add an identity provider] (ID プロバイダーの追加) を選択します。
-
[OpenID Connect] IdP を選択します。
-
[Provider name] (プロバイダー名) に一意の名前を入力します。
-
プロバイダーから受け取ったクライアント ID を、[Client ID] (クライアント ID) へ入力します。
-
プロバイダーから受け取ったクライアントシークレットを、[Client secret] (クライアントシークレット) に入力します。
-
このプロバイダーの [Authorized scopes] (承認済みスコープ) を入力します。スコープは、アプリケーションがプロバイダーにリクエストするユーザー属性のグループ (
name
およびemail
など) を定義します。OAuth 2.0仕様に従い、スコープはスペースで区切る必要があります。 ユーザーはこれらの属性をアプリケーションに提供することに同意を求められます。
-
[Attribute request method] (属性リクエストメソッド) を選択して、プロバイダーが操作する [userInfo] エンドポイントからユーザーの詳細をフェッチするために必要な HTTP メソッド (GET または POST) を Amazon Cognito に提供します。
-
[Setup method] (セットアップ方法) を選択して、OpenID Connect エンドポイントを、[Auto fill through issuer URL] (発行者 URL による自動入力) または [Manual input] (手動入力) で取得します。[Auto fill through issuer URL] (発行者 URL による自動入力) は、Amazon Cognito が
authorization
、token
、userInfo
、およびjwks_uri
エンドポイントの URL を取得できるパブリック.well-known/openid-configuration
エンドポイントを、プロバイダーが持っている場合に使用します。 -
発行者の URL、または IdP からの
authorization
、token
、userInfo
、およびjwks_uri
エンドポイントの URL を入力します。注記
URL は、
https://
で始める必要があり、末尾にスラッシュ (/
) を使用することはできません。この URL では、ポート番号 443 および 80 のみを使用できます。例えば、Salesforce では次の URL を使用します。https://login.salesforce.com
自動入力を選択した場合、検出ドキュメントは
authorization_endpoint
、token_endpoint
、userinfo_endpoint
、およびjwks_uri
の値に HTTPS を使用する必要があります。そうしない場合は、ログインが失敗します。 -
デフォルトで、OIDC クレームの [sub] (サブ) はユーザープール属性の [Username] (ユーザーネーム) にマッピングされます。他の OIDC クレーム
をユーザープール属性にマッピングできます。OIDC クレームを入力し、対応するユーザープール属性をドロップダウンリストから選択します。例えば、通常、クレームの [email] はユーザープール属性の [E メール] にマッピングされます。 -
IdP からユーザープールに属性をマッピングします。詳細は、「ユーザープール用 ID プロバイダー属性マッピングの特定」を参照してください。
-
[Create] (作成) を選択します。
-
[App client integration] (アプリケーションクライアント統合) タブから、[App clients] (アプリケーションクライアント) のリストより 1 つ選択して、[Edit hosted UI settings] (ホストされた UI 設定の編集) をクリックします。[Identity providers] (ID プロバイダー) で、新しい OIDC IdP をアプリケーションクライアントに追加します。
-
[Save changes] (変更の保存) をクリックします。
OIDC IdP を追加するには (AWS CLI)
-
CreateIdentityProvider API メソッドのパラメータに関する説明を参照してください。
aws cognito-idp create-identity-provider --user-pool-id
string
--provider-namestring
--provider-type OIDC --provider-detailsmap
--attribute-mappingstring
--idp-identifiers (list) --cli-input-jsonstring
--generate-cli-skeletonstring
このプロバイダー詳細のマップを使用します。
{ "client_id": "string", "client_secret": "string", "authorize_scopes": "string", "attributes_request_method": "string", "oidc_issuer": "string", "authorize_url": "string", "token_url": "string", "attributes_url": "string", "jwks_uri": "string" }
ステップ 3: OIDC IdP の設定をテストする
前の 2 つのセクションの要素を使用して認可 URL を作成し、OIDC IdP の設定をテストできます。
https://
mydomain.us-east-1.amazoncognito.com
/oauth2/authorize?response_type=code&client_id=1example23456789
&redirect_uri=https://www.example.com
ドメインは、コンソールにあるユーザープールの [ドメイン名] ページで確認できます。client_id は [全般設定] ページにあります。redirect_uri パラメータのコールバック URL を使用します。これは、ユーザーが認証に成功した後でリダイレクトされるページの URL です。