プラットフォームレベルの認証を参照: /en/api/authentication
認証
Shannon Gatewayは、すべての保護されたエンドポイントに対してAPIキー認証をサポートしています。APIキー認証
APIキーをX-API-Keyヘッダーに含めてください:
認証エラー
401 Unauthorized - APIキーが欠落または無効です:X-API-Keyヘッダーが欠落- 無効なAPIキー形式
- 無効または期限切れのAPIキー
- 誤った認証エンドポイント
リクエストヘッダー
必須ヘッダー
X-API-Key
目的: 認証必須: はい(
GATEWAY_SKIP_AUTH=1でない限り)形式: 文字列
Content-Type (POSTリクエスト)
目的: リクエストボディの形式を指定必須: POSTリクエストに対してはい
形式:
application/json
オプションヘッダー
Idempotency-Key
目的: 重複タスクの提出を防ぐ必須: いいえ(重要な操作には推奨)
形式: UUIDまたはユニークな文字列
キャッシュ期間: 24時間
traceparent
目的: W3C分散トレーシング必須: いいえ(可視性のために推奨)
形式:
{version}-{trace-id}-{parent-id}-{flags}
- version:
00(現在のバージョン) - trace-id: 32の16進数文字(128ビット)
- parent-id: 16の16進数文字(64ビット)
- flags: 2の16進数文字(サンプリング:
01、サンプリングなし:00)
tracestate
目的: ベンダー固有のトレースコンテキスト必須: いいえ
形式: カンマ区切りのキーと値のペア
Cache-Control
目的: キャッシュ動作を制御必須: いいえ
形式: 標準HTTPキャッシュディレクティブ
Last-Event-ID (SSEのみ)
目的: 特定のイベントからSSEストリームを再開必須: いいえ
形式: イベントID文字列 — RedisストリームID(例:
1700000000000-0)または数値シーケンス(例: 42)
レスポンスヘッダー
標準レスポンスヘッダー
X-Workflow-ID
目的: Temporalワークフロー識別子含まれる場所: POST /api/v1/tasks, GET /api/v1/tasks/
形式: 文字列(task_idと同じ)
X-Session-ID
目的: マルチターン会話のセッション識別子含まれる場所: POST /api/v1/tasks
形式: UUID文字列
Content-Type
目的: レスポンスボディの形式含まれる場所: すべてのJSONレスポンス
形式:
application/json
レート制限ヘッダー
X-RateLimit-Limit
目的: ウィンドウごとに許可される最大リクエスト数含まれる場所: すべての認証済みリクエスト
形式: 整数
X-RateLimit-Remaining
目的: 現在のウィンドウ内の残りリクエスト数含まれる場所: すべての認証済みリクエスト
形式: 整数
X-RateLimit-Reset
目的: レート制限がリセットされるUnixタイムスタンプ含まれる場所: すべての認証済みリクエスト
形式: Unixタイムスタンプ(秒)
Retry-After
目的: 再試行までの待機時間(429レスポンス) 含まれる場所: 429 Too Many Requestsレスポンス フォーマット: 整数(秒)CORSヘッダー
Access-Control-Allow-Origin
目的: CORSの許可されたオリジン 含まれる場所: すべてのレスポンス(開発モード) フォーマット: ドメインまたは*
Access-Control-Allow-Methods
目的: 許可されたHTTPメソッド 含まれる場所: CORSプリフライトレスポンス フォーマット: カンマ区切りのメソッドAccess-Control-Allow-Headers
目的: 許可されたリクエストヘッダー 含まれる場所: CORSプリフライトレスポンス フォーマット: カンマ区切りのヘッダーヘッダーの例
最小リクエスト (GET)
完全リクエスト (POST)
Python - すべてのヘッダー
JavaScript - Fetch API
セキュリティベストプラクティス
1. APIキーを保護する
APIキーをバージョン管理にコミットしない:2. 本番環境でHTTPSを使用
3. 定期的にAPIキーをローテーション
4. キーの有効期限を実装
5. APIキーの使用状況を監視
トラブルシューティング
認証失敗
問題: 401 Unauthorizedが返される 解決策:-
APIキーが含まれているか確認:
-
APIキーのフォーマットを確認:
-
認証が無効になっているか確認:
-
データベース内のキーを確認:
レート制限の問題
問題: 429 Too Many Requests 解決策:-
レート制限ヘッダーを確認する:
-
指数バックオフを実装する:
-
レート制限を増加させる(必要に応じて):
冪等性の問題
問題: 重複したタスクが作成される 解決策:-
常に Idempotency-Key を含める:
-
冪等性キーを保存する:
-
Redis キャッシュを確認する: