mcpField
L
ln-773-cors-configurator

ln-773-cors-configurator

github.com/levnikolaevichセキュリティ584386 回インストール2 日前に更新
リポジトリ

ln-773-cors-configurator について

.NETのASP.NET CoreまたはPythonのFastAPIプロジェクトでCORSを設定するプロジェクト初期化スキルです。開発用と本番用のポリシーを分けて生成し、設定とセキュリティ規則を検証します。

主な機能

  1. 01.NETとPythonのスタックに対応
  2. 02フロントエンドのOriginと設定を検出
  3. 03開発用と本番用のポリシーを分離
  4. 04CORS設定ファイルの生成と更新
  5. 05構文とプリフライトの検証

活用シーン

  1. 01新規プロジェクトでのCORS設定
  2. 02本番環境で許可するOriginの制限
  3. 03既存のCORS設定を検出して重複を回避

インストール

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

$npx skills add https://github.com/levnikolaevich/claude-code-skills --skill ln-773-cors-configurator

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

詳細

ln-773-cors-configurator

タイプ: L3 Worker カテゴリ: 7XX プロジェクトのブートストラップ

セキュリティを最優先にしたアプローチで、クロスオリジンリソース共有(CORS)ポリシーを設定します。


概要

項目詳細
入力ln-770 の Context Store
出力環境固有のポリシーを含む CORS 設定
スタック.NET(ASP.NET Core CORS)、Python(FastAPI CORSMiddleware)

フェーズ 1:コンテキストの受信

コーディネーターから Context Store を受け取ります。

必須コンテキスト:

  • STACK:.NET または Python
  • PROJECT_ROOT:プロジェクトディレクトリのパス
  • ENVIRONMENT:Development または Production

冪等性チェック:

  • .NET:AddCors または UseCors を Grep します
  • Python:CORSMiddleware を Grep します
  • 見つかった場合:{ "status": "skipped" } を返します

フェーズ 2:プロジェクト構造の分析

フロントエンドの設定を判定します。

検出手順:

  1. 同じリポジトリ内にフロントエンドがあるか確認します(/frontend、/client、/web)
  2. .env または appsettings.json で CORS_ORIGINS を読み取ります
  3. 一般的なフロントエンドのポート(3000、5173、4200)を特定します

検出されたフロントエンドのオリジン:

フレームワークデフォルトポートオリジン
React (CRA)3000http://localhost:3000
Vite5173http://localhost:5173
Angular4200http://localhost:4200
Next.js3000http://localhost:3000

フェーズ 3:判断事項

Q1:許可するオリジン
環境方針
Developmentlocalhost のオリジンを許可(設定可能)
Production環境変数で明示的に指定したオリジンのみ

セキュリティに関する警告: 認証情報とともに *(ワイルドカード)を使用しないでください。

Q2:許可するメソッド
メソッドデフォルト備考
GET✓ はい読み取り操作
POST✓ はい作成操作
PUT✓ はい更新操作
DELETE✓ はい削除操作
PATCHオプション部分更新
OPTIONS✓ はいプリフライトリクエスト(自動)
Q3:認証情報のサポート
シナリオAllowCredentials備考
Cookie ベースの認証✓ はいCookie に必要です
ヘッダー内の JWT✗ いいえ不要です
OAuth2場合によるドキュメントを確認してください

警告: AllowCredentials = true の場合、オリジンに * は使用できません。

Q4:プリフライトキャッシュの期間
環境MaxAge理由
Development0設定変更を即座に反映
Production86400 (24h)プリフライトリクエストを削減

フェーズ 4:設定の生成

.NET の出力ファイル
ファイル目的
Extensions/CorsExtensions.csCORS サービスの登録
appsettings.json (更新)オリジン設定
appsettings.Development.json (更新)開発用オリジン

生成手順:

  1. 現行の ASP.NET Core CORS API について MCP ref を使用します
  2. 次の内容を含む CorsExtensions を生成します:
    • 開発用ポリシー(許容的)
    • 本番用ポリシー(制限的)
    • 環境に基づくポリシー選択
  3. appsettings を CORS:Origins で更新します

登録コード:

builder.Services.AddCorsPolicy(builder.Configuration);
// ...
app.UseCors(builder.Environment.IsDevelopment() ? "Development" : "Production");
Python の出力ファイル
ファイル目的
middleware/cors_config.pyCORS ミドルウェア設定
.env (更新)CORS_ORIGINS 変数

生成手順:

  1. FastAPI CORSMiddleware について MCP ref を使用します
  2. 次の内容を含む cors_config.py を生成します:
    • 環境変数からのオリジン解析
    • メソッドとヘッダーの設定
    • 認証情報の処理
  3. .env を CORS_ORIGINS で更新します

登録コード:

from middleware.cors_config import configure_cors
configure_cors(app)

フェーズ 5:検証

検証手順:

  1. 構文チェック:

    • .NET:dotnet build --no-restore
    • Python:python -m py_compile middleware/cors_config.py
  2. CORS テスト:

    # Test preflight request
    curl -X OPTIONS http://localhost:5000/api/test \
      -H "Origin: http://localhost:3000" \
      -H "Access-Control-Request-Method: POST" \
      -v
    
  3. ヘッダーの確認:

    • Access-Control-Allow-Origin:リクエストのオリジンと一致すること
    • Access-Control-Allow-Methods:許可するメソッドが列挙されていること
    • Access-Control-Allow-Credentials:有効な場合は true
    • Access-Control-Max-Age:キャッシュ期間

セキュリティチェックリスト

完了前に、以下を確認してください。

  • 本番環境でワイルドカードの * オリジンを使用していない
  • 許可するメソッドが明示されている(本番環境で AllowAnyMethod を使用していない)
  • 認証情報は必要な場合にのみ使用している
  • 本番環境ではオリジンを環境変数から取得している
  • 本番環境でプリフライトリクエストのキャッシュが有効になっている

コーディネーターに戻る

{
  "status": "success",
  "files_created": [
    "Extensions/CorsExtensions.cs"
  ],
  "packages_added": [],
  "registration_code": "builder.Services.AddCorsPolicy(configuration);",
  "message": "Configured CORS with Development and Production policies"
}

参考リンク


重要なルール

  • 認証情報とワイルドカードの * オリジンを併用しないでください — CORS 仕様に反するセキュリティ違反です
  • 本番環境のオリジンは環境変数からのみ取得してください — コードに URL をハードコードしないでください
  • 開発環境と本番環境ではポリシーを分けてください — ローカルでは寛容に、本番環境では制限を厳しくします
  • 冪等性を保ってください — AddCors/UseCors または CORSMiddleware が存在する場合は、status: "skipped" を返してください
  • 本番環境ではプリフライトリクエストのキャッシュを有効にしてください — OPTIONS リクエストを減らすため、MaxAge を 86400(24 時間)に設定します

完了の定義

  • コンテキストストアを受信している(スタック、プロジェクトルート、環境)
  • フロントエンドのオリジンを検出している(ポート/フレームワークの自動検出)
  • ユーザーの選択を収集している(オリジン、メソッド、認証情報、キャッシュ期間)
  • 環境ごとのポリシーで CORS 設定を生成している
  • セキュリティチェックリストを確認している(ワイルドカードと認証情報の併用なし、メソッドの明示、環境変数ベースのオリジン)
  • 構文を検証している(dotnet build または py_compile)
  • 構造化 JSON レスポンスを ln-770 コーディネーターに返している

バージョン: 2.0.0 最終更新日: 2026-01-10

コメント