翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
ユーザープールでの OIDC ID プロバイダーの使用
ユーザーは、OpenID Connect (OIDC) ID プロバイダー (IdP) の既存アカウントを使用してアプリケーションにサインインできます。OIDC プロバイダーを使用すると、独立したシングルサインオンシステムのユーザーは、アプリケーションがユーザープールの共有形式で OIDC トークンを受信する間、既存の認証情報を提供できます。OIDC IdP を設定するには、ユーザープールを RP として処理するように IdP を設定するとともに、ユーザープールを IdP として処理するようにアプリケーションを設定します。Amazon Cognito は、複数の OIDC IdP とアプリケーションの間の中間ステップとして機能します。ユーザープールは、プロバイダーがユーザープールに直接渡す ID トークンとアクセストークンのクレームに、属性マッピングルールを適用します。次に、Amazon Cognito は、マッピングされたユーザー属性と、Lambda トリガーを使用して認証フローに加えた追加の調整に基づいて、新しいトークンを発行します。
OIDC IdP でサインインするユーザーは、ユーザープールアプリケーションにアクセスするために、新しい認証情報や情報を提供する必要はありません。アプリケーションは、ユーザープールを使用して、サインインのために IdP にサイレントにリダイレクトできます。この場合、ユーザープールは、アプリケーションのトークン形式を標準化するバックグラウンドのツールとして使用されます。IdP リダイレクトの詳細については、「認可エンドポイント」を参照してください。
他のサードパーティー ID プロバイダーと同様に、アプリケーションを OIDC プロバイダーに登録し、ユーザープールに接続する IdP アプリケーションに関する情報を取得する必要があります。ユーザープール OIDC IdP には、クライアント ID、クライアントシークレット、リクエストするスコープ、プロバイダーサービスエンドポイントに関する情報が必要です。ユーザープールが検出エンドポイントからプロバイダーの OIDC エンドポイントを検出すできますが、ユーザーが手動で入力することもできます。また、プロバイダー ID トークンを調べ、IdP とユーザープール内の属性に関して属性マッピングを作成する必要があります。
この認証フローの詳細については、「OIDC ユーザープール IdP 認証フロー」を参照してください。
注記
サードパーティー (フェデレーション) 経由のサインインは、Amazon Cognito のユーザープールで使用できます。この機能は、Amazon Cognito アイデンティティプールを使用した OIDC フェデレーションとは無関係です。
OIDC IdP は、、 AWS マネジメントコンソール、またはユーザープール API メソッド CreateIdentityProvider を使用して AWS CLI、ユーザープールに追加できます。
前提条件
開始するには、以下が必要です。
-
アプリケーションクライアントとユーザープールドメインを使用するユーザープール。詳細については、「ユーザープールの作成」を参照してください。
-
次の設定を持つ 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 トラストチェーンを持つ、有効期限が切れていないパブリックキーを表示します。
-
アプリケーションを OIDC IdP に登録する
OIDC IdP をユーザープール設定に追加してアプリケーションクライアントに割り当てる前に、OIDC クライアントアプリケーションを IdP に設定します。ユーザープールは、依拠しているパーティのアプリケーションとして、IdP を使用して認証を管理します。
OIDC IdP に登録する
-
OIDC IdP のデベロッパーアカウントを作成します。
OIDC IdP へのリンク OIDC IdP インストール方法 OIDC 検出 URL Salesforce https://MyDomainName.my.salesforce.com/.well-known/openid-configurationOneLogin OIDC 対応アプリケーションを接続する https://your-domain.onelogin.com/oidc/2/.well-known/openid-configurationJumpCloud OIDC による SSO https://oauth.id.jumpcloud.com/.well-known/openid-configurationOkta https://Your Okta subdomain.okta.com/.well-known/openid-configurationMicrosoft Entra ID https://login.microsoftonline.com/{tenant}/v2.0tenantの値には、テナント ID、common、organizations、またはconsumersを含めることができます。 -
OIDC IdP を使用して、
/oauth2/idpresponseエンドポイントを持つユーザープールドメインを登録します。そうすることで、OIDC IdP が後ほど、ユーザーの認証時に Amazon Cognito からこれを受け入れることが確実になります。https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/idpresponse -
ユーザーディレクトリとユーザープールで共有するスコープを選択します。OIDC IdP がユーザー情報を提供するには、スコープとして openid が必要です。
emailスコープは、emailおよびemail_verifiedの クレームへのアクセスを付与するために必要です。OIDC 仕様のその他のスコープは、すべてのユーザー属性のための profileと、phone_numberおよびphone_number_verifiedのためのphoneです。 -
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.auth.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.auth.us-east-1.amazoncognito.com/oauth2/idpresponse
-
-
スコープ
を選択します。スコープ openid を含める必要があります。email および email_verified の クレーム へのアクセスを許可するには、email スコープを追加します。スコープはスペースで区切ります。 -
[作成] を選択します。
Salesforce では、クライアント ID は [コンシューマーキー]、クライアントシークレットは [コンシューマーシークレット] と呼ばれます。クライアント ID とクライアントシークレットを書き留めます。これらは次のセクションで使用します。
ユーザープールに OIDC IdP を追加する
IdP を設定したら、OIDC IdP で認証リクエストを処理するようにユーザープールを設定できます。
OIDC IdP の設定をテストする
アプリケーションでは、ユーザーが OIDC プロバイダーでサインインできるように、ユーザーのクライアントでブラウザを起動する必要があります。前のセクションのセットアップ手順を完了したら、プロバイダーを使用したサインインをテストします。次の URL の例では、プレフィックスドメインを持つユーザープールのサインインページをロードします。
https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/authorize?response_type=code&client_id=1example23456789&redirect_uri=https://www.example.com
このリンクは、[アプリケーションクライアント] メニューに移動してアプリケーションクライアントを選択し、[ログインページ] タブに移動して [ログインページを表示] を選択したときに、Amazon Cognito に表示されるページです。ユーザープールドメインの詳細については、「ユーザープールのドメインを設定する」を参照してください。クライアント ID とコールバック URL など、アプリケーションクライアントの詳細については、「アプリケーションクライアントによるアプリケーション固有の設定」を参照してください。
次のリンク例では、identity_provider クエリパラメータを使用して、認可エンドポイント から MyOIDCIdP プロバイダーへのサイレントリダイレクトを設定します。この URL は、マネージドログインによるインタラクティブなユーザープールのサインインをバイパスし、IdP サインインページに直接移動します。
https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/authorize?identity_provider=MyOIDCIdP&response_type=code&client_id=1example23456789&redirect_uri=https://www.example.com