From bf9c9aa456d3895f82c0519e8dab0607e572f7bd Mon Sep 17 00:00:00 2001 From: kigawa Date: Wed, 31 Dec 2025 20:31:21 +0900 Subject: [PATCH 1/3] =?UTF-8?q?=E3=82=A8=E3=83=A9=E3=83=BC=E6=83=85?= =?UTF-8?q?=E5=A0=B1=E3=81=AE=E3=83=95=E3=82=A3=E3=83=BC=E3=83=AB=E3=83=89?= =?UTF-8?q?=E6=95=B4=E7=90=86=E3=81=A8=E3=82=B3=E3=83=BC=E3=83=89=E3=83=AC?= =?UTF-8?q?=E3=83=93=E3=83=A5=E3=83=BC=E7=94=A8=E3=83=AF=E3=83=BC=E3=82=AF?= =?UTF-8?q?=E3=83=95=E3=83=AD=E3=83=BC=E8=A8=AD=E5=AE=9A=E3=81=AE=E3=82=B3?= =?UTF-8?q?=E3=83=A1=E3=83=B3=E3=83=88=E3=82=A2=E3=82=A6=E3=83=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/claude-code-review.yml | 4 ++-- spec/task-client-protocol-details.md | 3 --- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/.github/workflows/claude-code-review.yml b/.github/workflows/claude-code-review.yml index 96a856e..71449f3 100644 --- a/.github/workflows/claude-code-review.yml +++ b/.github/workflows/claude-code-review.yml @@ -1,8 +1,8 @@ name: Claude Code Review on: - pull_request: - types: [opened, synchronize] +# pull_request: +# types: [opened, synchronize] # Optional: Only run on specific file changes # paths: # - "src/**/*.ts" diff --git a/spec/task-client-protocol-details.md b/spec/task-client-protocol-details.md index bb37384..590bb1b 100644 --- a/spec/task-client-protocol-details.md +++ b/spec/task-client-protocol-details.md @@ -104,8 +104,6 @@ wss://keruta-api:8080/ws/ktcp (推奨) "status": "FAILED", "errorCode": "BUILD_FAILED", "errorMessage": "npm install に失敗しました", - "exitCode": 1, - "retryable": true, "failedAt": "2024-01-01T10:08:00Z" }, "timestamp": "2024-01-01T10:08:00Z" @@ -117,7 +115,6 @@ wss://keruta-api:8080/ws/ktcp (推奨) { "type": "generic_error", "data": { - "status": "FAILED", "errorCode": "GENERIC_ERROR", "errorMessage": "システムで予期しないエラーが発生しました", "exitCode": -1, From 22afc6b3f9cffc11a3d62d5a8d57af1ea7a61477 Mon Sep 17 00:00:00 2001 From: kigawa Date: Wed, 31 Dec 2025 20:44:23 +0900 Subject: [PATCH 2/3] Update task client protocol: change authentication to OIDC via HTTP headers and remove authentication message --- spec/task-client-protocol.md | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/spec/task-client-protocol.md b/spec/task-client-protocol.md index e80855d..b018035 100644 --- a/spec/task-client-protocol.md +++ b/spec/task-client-protocol.md @@ -18,7 +18,7 @@ keruta task client protocol (KTCP) は、タスクサーバーとタスク実行 KTCP は WebSocket を唯一の通信プロトコルとして使用します。 - **到達保証**: TCP/IP による保証 -- **認証**: JWT トークンベース +- **認証**: HTTPヘッダによるOIDCトークン認証 - **メッセージ形式**: JSON-RPC 2.0 ベース - **接続**: 双方向全二重通信 @@ -52,7 +52,7 @@ KTCP は WebSocket を唯一の通信プロトコルとして使用します。 #### メッセージタイプ分類 -- **制御メッセージ**: 接続管理、認証、ハートビート +- **制御メッセージ**: 接続管理、ハートビート - **タスク操作メッセージ**: CRUD操作(作成/読み取り/更新/削除) - **実行管理メッセージ**: タスク実行、状態更新、ログストリーミング - **エラーメッセージ**: エラー通知とハンドリング @@ -71,10 +71,9 @@ KTCP は WebSocket を唯一の通信プロトコルとして使用します。 ## タスク実行ライフサイクル ### 1. 接続確立フェーズ -1. **WebSocket 接続**: プロバイダーがサーバーに接続 -2. **認証**: JWT トークンによる認証 -3. **登録**: プロバイダー能力の通知 -4. **ハートビート開始**: 定期的な生存確認 +1. **WebSocket 接続**: プロバイダーがHTTPヘッダによるOIDCトークン認証でサーバーに接続 +2. **登録**: プロバイダー能力の通知 +3. **ハートビート開始**: 定期的な生存確認 ### 2. タスク実行フェーズ 1. **タスク受信**: サーバーから実行要求を受信 @@ -145,7 +144,7 @@ KTCP は WebSocket を唯一の通信プロトコルとして使用します。 - **証明書**: 有効な SSL/TLS 証明書 ### 認証と認可 -- **JWT トークン**: Keycloak 発行のトークン +- **OIDC トークン**: Keycloak 発行のトークン - **スコープ検証**: プロバイダー権限の確認 - **CRUD 権限**: タスクの作成/読み取り/更新/削除に対する個別権限制御 - **トークン更新**: 有効期限内の自動更新 From dbdf286ab52a683f2b35098c9befdacdbe536046 Mon Sep 17 00:00:00 2001 From: kigawa Date: Thu, 1 Jan 2026 00:23:53 +0900 Subject: [PATCH 3/3] Fix authentication documentation: remove authentication message example and add HTTP header authentication details --- spec/task-client-protocol-details.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/spec/task-client-protocol-details.md b/spec/task-client-protocol-details.md index 590bb1b..574cc3c 100644 --- a/spec/task-client-protocol-details.md +++ b/spec/task-client-protocol-details.md @@ -8,17 +8,17 @@ ws://keruta-api:8080/ws/ktcp wss://keruta-api:8080/ws/ktcp (推奨) ``` -#### 認証メッセージ -```json -{ - "type": "authenticate", - "token": "", - "clientType": "provider", - "clientVersion": "1.0.0", - "capabilities": ["kubernetes", "docker", "local"] -} +#### HTTPヘッダによる認証 +WebSocket接続時に以下のHTTPヘッダを設定してOIDCトークンによる認証を行います: + +``` +Authorization: Bearer ``` +- **トークン形式**: Keycloak発行のOIDC IDトークン(JWT形式) +- **必須ヘッダ**: AuthorizationヘッダをBearerスキームで設定 +- **認証失敗時**: 接続が拒否され、エラーが返されます + #### ハートビート ```json {