Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

Generic OIDC

最終更新 Markdown で表示Agent セットアップ

Cloudflare Access には Generic OpenID Connect(OIDC)コネクターがあり、Access に未登録の IdP を連携できます。

1. アイデンティティプロバイダーでアプリケーションを作成する

  1. アイデンティティプロバイダーを開き、クライアント / アプリを作成します。

  2. クライアント / アプリの作成時、IdP が authorized redirect URI を求める場合があります。次の URL を入力します。

    https://<your-team-name>.cloudflareaccess.com/cdn-cgi/access/callback

    チーム名は、Cloudflare ダッシュボードSettings > Team name and domain > Team name で確認できます。

  3. 次のフィールドの内容をコピーします。

    • Client ID
    • Client secret
    • Auth URL: IdP の authorization_endpoint URL
    • Token URL: IdP の token_endpoint URL
    • Certificate URL: トークンへの署名を IdP の鍵に許可するための、IdP の jwks_uri エンドポイント

    これらの値は、アイデンティティプロバイダーの OIDC discovery endpoint で確認できます。プロバイダーによっては "well-known URL" と呼びます。

2. Cloudflare One に OIDC プロバイダーを追加する

  1. Cloudflare ダッシュボードZero Trust > Integrations > Identity providers を開きます。

  2. Your identity providersAdd new identity provider を選択します。

  3. OpenID Connect を選びます。

  4. アイデンティティプロバイダーに名前を付け、IdP から取得した情報で必須フィールドを入力します。

  5. (任意)IdP がプロトコルに対応している場合は Proof of Key Exchange(PKCE) を有効にします。有効にすると、すべてのログイン試行で PKCE が実行されます。

  6. (任意)SCIM を有効にする場合は ユーザーとグループを同期する を参照してください。

  7. (任意)Optional configurations で、ユーザーのアイデンティティに追加したい カスタム OIDC クレーム を入力します。この情報は user identity エンドポイント で利用できます。

  8. Save を選択します。

Identity Providers エンドポイントへ POST リクエストを送ります。

Required API token permissions

At least one of the following token permissions is required:
  • Access: Organizations, Identity Providers, and Groups Write
Add an Access identity providerbash
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/access/identity_providers" \
	--request POST \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"name": "Generic OIDC example",
		"type": "oidc",
		"config": {
				"client_id": "<your client id>",
				"client_secret": "<your client secret>",
				"auth_url": "https://accounts.google.com/o/oauth2/auth",
				"token_url": "https://accounts.google.com/o/oauth2/token",
				"certs_url": "https://www.googleapis.com/oauth2/v3/certs",
				"pkce_enabled": false,
				"email_claim_name": "email",
				"claims": [
						"employeeID",
						"groups"
				],
				"scopes": [
						"openid",
						"email",
						"profile"
				]
		}
	}'
  1. cloudflare_api_token に次の権限を追加します。

    • Access: Organizations, Identity Providers, and Groups Write
  2. cloudflare_zero_trust_access_identity_provider リソースを設定します。

    resource "cloudflare_zero_trust_access_identity_provider" "generic_oidc_example" {
    	account_id = var.cloudflare_account_id
    	name       = "Generic OIDC example"
    	type       = "oidc"
    	config 		 = {
    		client_id = "<your client id>"
    		client_secret = "<your client secret>"
    		auth_url = "https://accounts.google.com/o/oauth2/auth"
    		token_url = "https://accounts.google.com/o/oauth2/token"
    		certs_url = "https://www.googleapis.com/oauth2/v3/certs"
    		pkce_enabled = false
    		email_claim_name = "email"
    		claims = ["employeeID", "groups"]
    		scopes = ["openid", "email", "profile"]
    	}
    }

3. 接続をテストする

接続が機能しているかを確認するには、Authentication > Login methods を開き、テストするログイン方法の横にある Test を選択します。成功すると、確認画面が表示されます。

ユーザーとグループを同期する

Generic OIDC 連携では、SCIM を使ってユーザーグループの同期とユーザーの自動デプロビジョニングができます。

SCIM が Access と Gateway のポリシー評価に与える影響は異なります。

Access は、認証時にアイデンティティプロバイダーが返す SAML アサーションまたは OIDC トークンから、ユーザーの ID とグループ所属を評価します。SCIM は Access のポリシービルダーに読みやすいグループ名を提供しますが、Access はログイン評価に SCIM のグループ所属を使いません。Enable user deprovisioning をオンにすると、SCIM アプリケーションからユーザーを削除した時点で、そのユーザーのアクティブな Access セッションが取り消されます。グループ所属の変更後にセッションを取り消すよう、SCIM を設定することもできます。Access は、ユーザーが再度認証したときに、更新後のアイデンティティプロバイダーデータを評価します。

Gateway は、User Registry の ID に対してアイデンティティベースのポリシーを評価します。ユーザーまたはグループ所属が変わると、SCIM はこの ID を更新します。ユーザーの再認証を待つ必要はありません。Cloudflare One Client のデバイスプロファイルも、同じ同期済み ID を使います。

前提条件

アイデンティティプロバイダーは SCIM バージョン 2.0 に対応している必要があります。

1. Cloudflare One で SCIM を有効にする

  1. Cloudflare ダッシュボードZero Trust > Integrations > Identity providers を開きます。

  2. IdP 連携を探し、Edit を選択します。

  3. Enable SCIM をオンにします。

  4. (任意)次の設定を行います。

  1. Regenerate Secret を選択します。SCIM EndpointSCIM Secret をコピーします。これらの値を IdP に入力します。

  2. Save を選択します。

SCIM シークレットに有効期限はありません。ただし、いつでも手動で再生成できます。

2. IdP で SCIM を設定する

設定手順はアイデンティティプロバイダーによって異なります。IdP では、元の SSO アプリケーション を編集するか、新しい SCIM アプリケーションを作成します。詳細は各アイデンティティプロバイダーのドキュメントを参照してください。手順の例は Okta または Jumpcloud のガイドを参照してください。

IdP グループ

IdP グループに基づいてポリシーを作成する場合は、次を確認してください。

  • IdP が groups フィールドを送ること。名前は完全一致である必要があります(大文字小文字は区別しません)。それ以外の値は OIDC クレームとして送られます。
  • IdP が新しい SCIM アプリケーションを必要とする場合は、そのグループが 元の SSO アプリケーション のグループと一致すること。グループを一致させると、ユーザーが Access に認証したときに IdP が返すグループと、Gateway のアイデンティティが同期したままになります。

3. SCIM プロビジョニングを確認する

Cloudflare One でユーザー ID が更新されたかを確認するには、SCIM プロビジョニングログ を表示します。

任意の設定

カスタム OIDC クレーム

すべての OIDC IdP 連携は、カスタム OIDC クレームに対応しています。設定すると、Access はオリジンサービスが利用できるように、そのクレームを Access JWT に追加します。カスタム OIDC クレームは Access ポリシーGateway ポリシー で参照できます。カスタムのアイデンティティ属性に基づいて、アプリケーションへのユーザーアクセスを制御できます。

IdP 連携にカスタム OIDC クレームを追加するには、次の手順を実行します。

  1. アイデンティティプロバイダーで、カスタムクレームが OIDC ID トークンに含まれることを確認します。

  2. Cloudflare ダッシュボードZero Trust > Integrations > Identity providers を開きます。

  3. Your identity providers で対象のアイデンティティプロバイダーを探し、Edit を選択します。

  4. OIDC Claims に、カスタムクレームの名前を入力します(例: oid)。

  5. Save を選択します。

  6. Test を選択し、カスタムクレームが oidc_fields に表示されることを確認します。例:

    	"oidc_fields": {
    		"oid": "54eb1ed2-7150-44e6-bbe4-ead24c132fd4"
    	},

これで、OIDC Claim または IdP OIDC Claim セレクターを使い、カスタムクレーム向けの Access ポリシーを作成できます。カスタム OIDC クレームは Gateway ポリシーのアイデンティティベースセレクター としても使えます。カスタムクレームは、Access 背後のオリジンへ JWT で渡されます。

Email クレーム

Access がユーザーのメールを識別するために使う、カスタムの Email claim 名を指定できます。IdP が OIDC ID トークンで標準の email クレームを返さない場合に便利です。

複数レコードの OIDC クレーム

Cloudflare Access は、複数レコードの OIDC クレームにも対応しています。これらのクレームは解析され、ポリシーで個別に参照できます。アプリケーションでのきめ細かなアクセス制御と、正確なユーザー認可が可能になります。

Cloudflare Access は、OIDC クレーム値の部分参照と OIDC スコープには対応していません。

Generic OIDC トークンでサポートされるアルゴリズム

Cloudflare は、Generic OIDC トークンの検証に次のアルゴリズムをサポートします。

  • RS512
  • RS256
  • PS512
  • ES256
  • ES384
  • ES512

役に立ちましたか?