mcpField
C
cloudflare-zero-trust-access

cloudflare-zero-trust-access

github.com/secondskyセキュリティ240228 回インストール5 週間前に更新
リポジトリ

cloudflare-zero-trust-access について

Cloudflare Workers アプリに Cloudflare Zero Trust Access 認証を組み込む開発者向けスキルです。Hono ミドルウェア、手動 JWT 検証、サービストークン、CORS、多テナントの実装パターンとエラー対策を提供します。

主な機能

  1. 01Hono Access ミドルウェア
  2. 02手動 JWT 検証
  3. 03サービストークン認証
  4. 04CORS と Access の適用順パターン
  5. 05多テナント認証テンプレート

活用シーン

  1. 01Workers 管理ダッシュボードの保護
  2. 02ユーザーとサービスからの API リクエスト認証
  3. 03SPA と保護された API の接続
  4. 04CI/CD パイプラインの認証

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/secondsky/claude-skills --skill cloudflare-zero-trust-access

インストール後、Claude Code で/cloudflare-zero-trust-accessを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
access-policy-setup.md
common-errors.md
jwt-payload-structure.md
quick-start.md
service-tokens-guide.md
use-cases.md
value-proposition.md
scripts/
create-service-token.sh
test-access-jwt.sh
templates/
.env.example
cors-access.ts
hono-basic-setup.ts
jwt-validation-manual.ts
multi-tenant.ts
service-token-auth.ts
types.ts
wrangler.jsonc

詳細

Cloudflare Zero Trust Access スキル

実績のあるパターンとテンプレートを使用して、Cloudflare Workers アプリケーションに Cloudflare Zero Trust Access 認証を統合します。


概要

このスキルでは、Cloudflare Access の完全な統合パターンを提供し、独自の認証インフラストラクチャを管理することなく、Workers でアプリケーションレベルの認証を有効にします。

Cloudflare Access とは? Cloudflare Access は、アプリケーションの前段に配置される Zero Trust 認証です。ユーザーが Worker に到達する前にユーザーを検証します。認証後、Access は Worker が検証する JWT トークンを発行します。

主なメリット:

  • 管理が必要な認証インフラストラクチャが不要
  • ID プロバイダー(Azure AD、Google、Okta、GitHub)と統合
  • マシン間認証用のサービス トークン
  • MFA とセッション管理を標準搭載
  • 包括的な監査ログ

このスキルを使用するタイミング

次の内容を含むタスクで、このスキルを使用します。

  • 認証:Worker ルートの保護、管理者ダッシュボードのセキュリティ保護、API 認証
  • アクセス制御:ロールベースのアクセス制御(RBAC)、グループベースの権限、地域制限
  • サービス認証:Worker API を呼び出すバックエンドサービス、CI/CD パイプライン、cron ジョブ
  • マルチテナント:組織レベルの認証を備えた SaaS アプリ
  • CORS + 認証:保護された API を呼び出すシングルページアプリケーション

トリガーとなるキーワード: cloudflare access、zero trust、access authentication、JWT validation、service tokens、cloudflare auth、hono access、workers authentication、protect worker routes、admin authentication


統合パターン

📖 Cloudflare Access を初めて使用しますか? references/quick-start.md を読み込み、手順に沿ってセットアップしてください(15~20 分)。

パターン 1:Hono ミドルウェア(推奨)

@hono/cloudflare-access を使用して、Access を 1 行で統合します。

使用するタイミング:

  • Hono フレームワークで構築する場合
  • 迅速かつ本番環境ですぐに使えるセットアップが必要な場合
  • JWT の自動検証とキーのキャッシュを利用したい場合

テンプレート:templates/hono-basic-setup.ts

セットアップ:

import { Hono } from 'hono'
import { cloudflareAccess } from '@hono/cloudflare-access'

const app = new Hono<{ Bindings: Env }>()

// Public routes
app.get('/', (c) => c.text('Public page'))

// Protected routes
app.use(
  '/admin/*',
  cloudflareAccess({
    domain: (c) => c.env.ACCESS_TEAM_DOMAIN,
  })
)

app.get('/admin/dashboard', (c) => {
  const { email } = c.get('accessPayload')
  return c.text(`Welcome, ${email}!`)
})

設定(wrangler.jsonc):

{
  "vars": {
    "ACCESS_TEAM_DOMAIN": "your-team.cloudflareaccess.com",
    "ACCESS_AUD": "your-app-aud-tag"
  }
}

メリット:

  • ✅ JWT を自動検証
  • ✅ 公開鍵をキャッシュ(TTL は 1 時間)
  • ✅ TypeScript による型安全性
  • ✅ 本番環境での使用実績があり、メンテナンスされています

パターン 2:手動での JWT 検証

使用するタイミング:Hono を使用せず、カスタム検証ロジックが必要な場合

テンプレート:templates/jwt-validation-manual.ts(約 100 行、Web Crypto API を使用)


パターン 3:サービストークン認証

使用するタイミング:CI/CD パイプライン、バックエンドサービス、cron ジョブ(対話型ログインなし)

クライアント:CF-Access-Client-Id と CF-Access-Client-Secret ヘッダーを送信します

サーバー:同じミドルウェアで両方に対応します。!payload.email && payload.common_name で判別します

📄 詳細ガイド:references/service-tokens-guide.md


パターン 4:CORS + Access

使用するタイミング:保護された API を呼び出す SPA(React/Vue/Angular)

⚠️ 重要:CORS ミドルウェアは Access ミドルウェアより前に配置する必要があります!

// ✅ CORRECT ORDER
app.use('*', cors({ origin: 'https://app.example.com', credentials: true }))
app.use('/api/*', cloudflareAccess({ domain: (c) => c.env.ACCESS_TEAM_DOMAIN }))

理由:OPTIONS プリフライトリクエストには認証ヘッダーがないため、Access によって 401 でブロックされます

📄 詳細なパターン:templates/cors-access.ts


パターン 5:マルチテナント

使用するタイミング:組織ごとの認証を備えた SaaS、ホワイトラベルアプリ

アーキテクチャ:D1/KV にテナント設定を保存 → リクエストごとにミドルウェアを動的に設定

📄 詳細なパターン:templates/multi-tenant.ts および references/use-cases.md


防止できる一般的なエラー

このスキルでは、記録されている 8 件のエラーを防止します。詳細は references/common-errors.md を参照してください。

エラー #1:CORS プリフライトのブロック(45 分の節約)

問題:OPTIONS リクエストが 401 を返し、CORS が機能しなくなります

解決策:CORS ミドルウェアを Access ミドルウェアより前に配置します

// ✅ Correct
app.use('*', cors())
app.use('/api/*', cloudflareAccess({ domain: '...' }))

エラー #2:JWT ヘッダーがない(30 分の節約)

問題:リクエストが Access を経由せず、JWT ヘッダーがありません

解決策:*.workers.dev に直接アクセスせず、Access URL 経由で Worker にアクセスします

✅ https://team.cloudflareaccess.com/...
❌ https://worker.workers.dev

エラー #3:チーム名が無効(15 分の節約)

問題:チーム名がハードコードされているか、誤っているため、「Invalid issuer」が発生します

解決策:環境変数を使用します

// ✅ Correct
cloudflareAccess({ domain: (c) => c.env.ACCESS_TEAM_DOMAIN })

// ❌ Wrong
cloudflareAccess({ domain: 'my-team.cloudflareaccess.com' })

エラー #4-8(クイックリファレンス)
#エラー解決策
4キ​​ーキャッシュの競合状態@hono/cloudflare-access を使用します(自動でキャッシュします)
5サービストークンのヘッダーが誤っているCF-Access-Client-Id/Secret を使用します(Authorization ではありません)
6トークンの有効期限切れ(1 時間後に 401)適切に処理し、ログインにリダイレクトします
7ポリシーの重複最も具体的なパスを使用します
8開発環境と本番環境の不一致環境ごとの設定を使用します

📄 エラーの詳細:references/common-errors.md(実装ごとに約 2.5 時間を節約)


テンプレート

テンプレート目的
hono-basic-setup.ts標準的な Hono と Access の統合
jwt-validation-manual.tsWeb Crypto を使用した手動 JWT 検証
service-token-auth.tsサービストークンのパターン
cors-access.tsCORS と Access(正しい順序)
multi-tenant.tsマルチテナントアーキテクチャ
wrangler.jsoncWrangler の完全な設定
.env.example環境変数のテンプレート
types.tsTypeScript の型定義

スクリプト

スクリプト使用方法
test-access-jwt.sh./test-access-jwt.sh <jwt-token> - JWT のデコードと検証
create-service-token.sh./create-service-token.sh [name] - サービストークンの設定ガイド

ユースケース

ユースケーステンプレート要点
管理者ダッシュボードhono-basic-setup.tsメールドメインポリシー
API 認証hono-basic-setup.tsユーザーとサービスの混合ポリシー
SPA と APIcors-access.tsAccess の前に CORS を設定します!
CI/CD パイプラインservice-token-auth.tsシークレットにサービストークンを設定
マルチテナント SaaSmulti-tenant.tsD1 のテナント設定

📄 ユースケースの詳細:references/use-cases.md


リファレンスを読み込むタイミング

リファレンスファイル読み込むタイミング
references/quick-start.md新規ユーザー向けの手順に沿ったセットアップ、初回の統合時
references/common-errors.md認証の問題のデバッグ、防止パターンの確認時(8 件すべてのエラーを含む)
references/jwt-payload-structure.mdJWT クレームへのアクセス時、ユーザートークンとサービストークンの確認時
references/service-tokens-guide.mdマシン間認証の設定時
references/access-policy-setup.mdダッシュボードの設定、ポリシーの作成時
references/use-cases.md特定のシナリオにおける実装の詳細を確認する時
references/value-proposition.mdトークン効率の指標、ワークフローのガイダンス、本番環境での検証を確認する時

パッケージのバージョン

パッケージバージョン
@hono/cloudflare-access0.3.1
hono4.12.12
@cloudflare/workers-types4.20260408.0

検証済み:2025-12-14 | トークン節約率:約 58% | 本番環境でのテスト済み:✅


使用しない場合

このスキルは Cloudflare Access を使用する Cloudflare Workers 向けです。次の場合には使用しないでください。

  • ❌ Cloudflare Pages(代わりに @cloudflare/pages-plugin-cloudflare-access を使用してください)
  • ❌ Cloudflare 以外のプラットフォーム
  • ❌ カスタム JWT 認証(Access ではないもの)
  • ❌ Auth.js またはその他の認証ライブラリ
  • ❌ セルフホスト型の認証

これらの場合は、適切なスキルまたはライブラリを使用してください。


追加リソース

Cloudflare のドキュメント:

パッケージ:

ダッシュボード:


スキルのバージョン:1.0.0 最終更新日:2025-10-28 防止したエラー数:8 トークン節約率:58% 時間の節約:2.5 時間 本番環境でのテスト済み:✅

コメント