翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
ユーザープールへの OIDC ID プロバイダーの追加
OpenID Connect (OIDC)
注記
サードパーティー (フェデレーション) 経由のサインインは、Amazon Cognito のユーザープールで使用できます。この機能は、Amazon Cognito ID プール (フェデレーティッド ID) 経由のフェデレーションとは無関係です。
OIDC IdP は、 AWS Management Console、、またはユーザープール API メソッド を使用して AWS CLI、 のユーザープールに追加できます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
クレームをフックみます。
-
ステップ 1: OIDC IdP に登録する
Amazon Cognito で OIDC IdP を作成する前に、アプリケーションを OIDC IdP に登録して、クライアント ID とクライアントシークレットを取得する必要があります。
OIDC IdP に登録する
-
OIDC IdP のデベロッパーアカウントを作成します。
OIDC へのリンク IdPsOIDC 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 スコープが必要です。スコープはスペースで区切ります。 -
[作成] を選択します。
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 プロバイダー属性マッピングの特定」を参照してください。
-
[作成] を選択します。
-
[App client integration] (アプリケーションクライアント統合) タブから、[App clients] (アプリケーションクライアント) のリストより 1 つ選択して、[Edit hosted UI settings] (ホストされた UI 設定の編集) をクリックします。[Identity providers] (ID プロバイダー) で、新しい OIDC IdP をアプリケーションクライアントに追加します。
-
[変更の保存] をクリックします。
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 です。