Amazon Cognito は、Web アプリとモバイルアプリのエンドユーザー向けに SSO の ID 管理を提供します。Cloudflare One では、Amazon Cognito を OIDC のアイデンティティプロバイダーとして連携できます。
- Amazon Cognito の ユーザープール ↗
連携の設定には、次の Amazon Cognito の値が必要です。
- App (client) ID
- Client secret
- Auth URL
- Token URL
- Certificate (key) URL
これらの値を取得する手順は次のとおりです。
-
Amazon Cognito の管理ポータルにログインします。
-
User pools を開き、対象のユーザープールを選択します。
-
App integration タブを選択します。
-
Domain で、ユーザープールのドメインをコピーするか、新しいドメインを設定 ↗します。
-
次の Amazon Cognito OIDC エンドポイント ↗ を控えます。
- Auth URL:
https://<your user pool domain>/oauth2/authorize - Token URL:
https://<your user pool domain>/oauth2/token - Certificate (key) URL:
https://cognito-idp.<region>.amazonaws.com/<your user pool ID>/.well-known/jwks.json(これは User pool overview に表示される Token signing key URL です。)
- Auth URL:
-
App client list で Create app client を選択します。
-
App type で Confidential client を選択します。
-
アプリケーションの App client name を入力します。
-
Generate a client secret が選択されていることを確認します。
-
次の Hosted UI settings を設定します。
-
Allowed callback URLs に、次の URL を追加します。
https://<your-team-name>.cloudflareaccess.com/cdn-cgi/access/callbackチーム名は、Cloudflare ダッシュボード ↗ の Settings > Team name and domain > Team name で確認できます。
-
このアプリクライアントで使う Identity providers を選択します。最低限、プロバイダーとして Cognito user pool を有効にします。
-
OAuth 2.0 grant types で Authorization code grant を選択します。
-
OpenID Connect scopes で OpenID、Email、Profile を選択します。
-
-
Create app client を選択します。
-
作成したアプリクライアントを選択します。
-
Client ID と Client secret をコピーします。
-
Cloudflare ダッシュボード ↗ で Zero Trust > Integrations > Identity providers を開きます。
-
Your identity providers で Add new identity provider を選択します。
-
OpenID Connect を選択します。
-
アイデンティティプロバイダーに名前を付け、Amazon Cognito で取得した情報を必須項目に入力します。
-
(任意)IdP がプロトコルに対応している場合は、Proof of Key Exchange (PKCE) ↗ を有効にします。PKCE はすべてのログイン試行で実行されます。
-
(任意)Optional configurations で、ユーザーの ID に追加したい カスタム OIDC クレーム を入力します。
-
Save を選択します。
接続を テスト するには、Test を選択します。
{
"config": {
"client_id": "<your client id>",
"client_secret": "<your client secret>",
"auth_url": "https://<your user pool domain>/oauth2/authorize",
"token_url": "https://<your user pool domain>/oauth2/token",
"certs_url": "https://cognito-idp.<region>.amazonaws.com/<your user pool ID>/.well-known/jwks.json",
"scopes": ["openid", "email", "profile"],
"claims": ["sub", "cognito:username", "name", "cognito:groups"]
},
"type": "oidc",
"name": "Amazon Cognito example"
}