mcpField
C
cloudflare-tunnel

cloudflare-tunnel

github.com/okou-aiクラウド・DevOps81909 回インストール1 週間前に更新
リポジトリ

cloudflare-tunnel について

コマンドラインからHTTPリクエストを行うユーザー向けに、Cloudflare Accessで保護されたサービスへのアクセス方法を説明するスキルです。サービストークンのヘッダーと、サービス固有の認証との併用例を扱います。

主な機能

  1. 01Cloudflare Accessリクエストヘッダーの設定
  2. 02複数のHTTPメソッドでのリクエスト
  3. 03サービス固有の認証との併用
  4. 04JSON本文の送信とファイルのダウンロード

活用シーン

  1. 01Cloudflare Accessで保護されたAPIの呼び出し
  2. 02保護されたサービスへのJSON送信
  3. 03保護されたサービスからのファイル取得
  4. 04401・403・接続エラーの調査

インストール

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

$npx skills add https://github.com/okou-ai/okou-skills --skill cloudflare-tunnel

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

詳細

使用方法

基本的な curl リクエスト

Cloudflare Access で認証するには、次の 2 つのヘッダーを追加します。

curl -s \
  -H "CF-Access-Client-Id: $CF_ACCESS_CLIENT_ID" \
  -H "CF-Access-Client-Secret: $CF_ACCESS_CLIENT_SECRET" \
  "https://your-protected-service.example.com/api/endpoint"
追加の認証を使用する場合

多くのサービスでは、Cloudflare Access とサービス独自の認証の両方が必要です。

curl -s \
  -H "CF-Access-Client-Id: $CF_ACCESS_CLIENT_ID" \
  -H "CF-Access-Client-Secret: $CF_ACCESS_CLIENT_SECRET" \
  -H "Authorization: Bearer $API_TOKEN" \
  "https://your-protected-service.example.com/api/endpoint"
Basic Auth を使用する場合
curl -s \
  -H "CF-Access-Client-Id: $CF_ACCESS_CLIENT_ID" \
  -H "CF-Access-Client-Secret: $CF_ACCESS_CLIENT_SECRET" \
  -u "username:password" \
  "https://your-protected-service.example.com/api/endpoint"
JSON ボディを含む POST リクエスト

/tmp/request.json に書き込みます。

{
  "key": "value"
}

次に、以下を実行します。

curl -s -X POST \
  -H "CF-Access-Client-Id: $CF_ACCESS_CLIENT_ID" \
  -H "CF-Access-Client-Secret: $CF_ACCESS_CLIENT_SECRET" \
  -H "Content-Type: application/json" \
  -d @/tmp/request.json \
  "https://your-protected-service.example.com/api/endpoint"
ファイルをダウンロードする
curl -s -o /tmp/output.file \
  -H "CF-Access-Client-Id: $CF_ACCESS_CLIENT_ID" \
  -H "CF-Access-Client-Secret: $CF_ACCESS_CLIENT_SECRET" \
  "https://your-protected-service.example.com/file"
SSL 検証をスキップする(自己署名証明書)

自己署名証明書を使用しているサービスでは、-k フラグを追加します。

curl -k -s \
  -H "CF-Access-Client-Id: $CF_ACCESS_CLIENT_ID" \
  -H "CF-Access-Client-Secret: $CF_ACCESS_CLIENT_SECRET" \
  "https://your-protected-service.example.com/api/endpoint"

必須ヘッダー

ヘッダー値説明
CF-Access-Client-Id<client-id>.accessサービストークンのクライアント ID
CF-Access-Client-Secret<secret>サービストークンのクライアントシークレット

よくあるエラー

エラー原因解決方法
403 Forbiddenヘッダーが無効、または指定されていないクライアント ID とシークレットを確認してください
403 ForbiddenAccess ポリシーにトークンが含まれていないアプリケーションの Access ポリシーにトークンを追加してください
401 Unauthorizedサービス独自の認証に失敗したサービス固有の認証情報を確認してください
Connection refusedトンネルが起動していないcloudflared が実行中であることを確認してください

ヒント

  1. ヘッダーの順序は問いません - CF ヘッダーはリクエストのどこに指定してもかまいません
  2. あらゆる HTTP メソッドで動作します - GET、POST、PUT、DELETE など
  3. 他の認証方式と組み合わせられます - CF Access + Basic Auth、Bearer Token など
  4. トークンのローテーション - Zero Trust ダッシュボードでシークレットを定期的にローテーションしてください

API リファレンス

コメント