[PR #119] [MERGED] feat: 为 claude-kiro-oauth 提供商添加 OAuth 授权生成功能(支持 Google/GitHub/AWS Builder ID) #267

Closed
opened 2026-02-27 07:18:45 +03:00 by kerem · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/justlovemaki/AIClient-2-API/pull/119
Author: @Ravens2121
Created: 12/21/2025
Status: Merged
Merged: 12/21/2025
Merged by: @justlovemaki

Base: mainHead: feature/claude-kiro-oauth


📝 Commits (1)

  • 2c29526 feat: add claude-kiro-oauth provider OAuth authorization support

📊 Changes

3 files changed (+585 additions, -3 deletions)

View changed files

📝 src/oauth-handlers.js (+470 -0)
📝 src/ui-manager.js (+7 -1)
📝 static/app/provider-manager.js (+108 -2)

📄 Description

概述

claude-kiro-oauth 提供商添加完整的 OAuth 授权生成功能,支持三种认证方式:

认证方式 说明 流程类型
Google 账号 使用 Google 账号进行社交登录 PKCE + 回调服务器
GitHub 账号 使用 GitHub 账号进行社交登录 PKCE + 回调服务器
AWS Builder ID 使用 AWS Builder ID 进行授权 Device Code Flow + 轮询

修改文件

1. src/oauth-handlers.js (+463 行)

新增配置:

  • KIRO_OAUTH_CONFIG - Kiro OAuth 配置常量(端点、作用域、超时等)
  • activeKiroServers - 活动回调服务器管理
  • activeKiroPollingTasks - 活动轮询任务管理

新增函数:

函数名 说明 导出
handleKiroOAuth() 统一入口,根据 method 分发到不同处理函数
handleKiroSocialAuth() Google/GitHub 社交登录(PKCE 流程)
handleKiroBuilderIDDeviceCode() AWS Builder ID 设备码流程
pollKiroBuilderIDToken() 轮询获取 Builder ID 令牌
stopKiroPollingTask() 停止轮询任务
startKiroProtocolHandler() 启动本地回调服务器
closeKiroServer() 关闭回调服务器
createKiroCallbackServer() 创建 HTTP 回调服务器

2. src/ui-manager.js (+8 行)

  • 导入 handleKiroOAuth 函数
  • /api/providers/{type}/generate-auth-url 端点添加 claude-kiro-oauth 分支

3. static/app/provider-manager.js (+107 行)

UI 增强:

  • claude-kiro-oauth 添加到 oauthProviders 列表,显示"生成授权"按钮
  • 新增 showKiroAuthMethodSelector() 函数 - 显示认证方式选择对话框
  • 新增 executeGenerateAuthUrl() 函数 - 执行授权链接生成
  • 为 Kiro OAuth 添加专门的授权说明

API 使用方式

POST /api/providers/claude-kiro-oauth/generate-auth-url
Content-Type: application/json

{
    "method": "google",       // 可选值: 'google' | 'github' | 'builder-id'
    "saveToConfigs": true     // 保存凭据到 configs/kiro/ 目录
}

响应示例:

{
    "success": true,
    "authUrl": "https://prod.us-east-1.auth.desktop.kiro.dev/login?...",
    "authInfo": {
        "provider": "claude-kiro-oauth",
        "authMethod": "social",
        "socialProvider": "Google",
        "port": 19876,
        "state": "xxx"
    }
}

凭据存储格式

保存路径: configs/kiro/{timestamp}_oauth_creds.json

Social Auth (Google/GitHub):

{
    "accessToken": "eyJ...",
    "refreshToken": "...",
    "profileArn": "arn:aws:codewhisperer:us-east-1:...",
    "expiresAt": "2025-12-21T13:00:00.000Z",
    "authMethod": "social",
    "region": "us-east-1"
}

Builder ID (AWS SSO OIDC):

{
    "accessToken": "eyJ...",
    "refreshToken": "...",
    "expiresAt": "2025-12-21T13:00:00.000Z",
    "authMethod": "builder-id",
    "clientId": "...",
    "clientSecret": "...",
    "region": "us-east-1"
}

与现有实现的一致性

对比项 gemini-cli-oauth openai-qwen-oauth claude-kiro-oauth
OAuth 类型 Google OAuth Device Code Social Auth + SSO OIDC
配置位置 OAUTH_PROVIDERS QWEN_OAUTH_CONFIG KIRO_OAUTH_CONFIG
回调端口 8085 - (轮询) 19876-19880
凭据目录 configs/gemini/ configs/qwen/ configs/kiro/
处理函数 handleGeminiCliOAuth handleQwenOAuth handleKiroOAuth
事件类型 oauth_success oauth_success oauth_success

测试验证

  • 语法检查通过 (node --check)
  • Docker 镜像构建成功
  • UI 显示"生成授权"按钮
  • 认证方式选择对话框正常工作
  • WebSocket 事件广播机制复用

相关文档

设计参考:基于 gemini-antigravityopenai-qwen-oauth 的现有实现模式


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/justlovemaki/AIClient-2-API/pull/119 **Author:** [@Ravens2121](https://github.com/Ravens2121) **Created:** 12/21/2025 **Status:** ✅ Merged **Merged:** 12/21/2025 **Merged by:** [@justlovemaki](https://github.com/justlovemaki) **Base:** `main` ← **Head:** `feature/claude-kiro-oauth` --- ### 📝 Commits (1) - [`2c29526`](https://github.com/justlovemaki/AIClient-2-API/commit/2c295263e8ff1c014a6a33109d50008bf426a13a) feat: add claude-kiro-oauth provider OAuth authorization support ### 📊 Changes **3 files changed** (+585 additions, -3 deletions) <details> <summary>View changed files</summary> 📝 `src/oauth-handlers.js` (+470 -0) 📝 `src/ui-manager.js` (+7 -1) 📝 `static/app/provider-manager.js` (+108 -2) </details> ### 📄 Description ## 概述 为 `claude-kiro-oauth` 提供商添加完整的 OAuth 授权生成功能,支持三种认证方式: | 认证方式 | 说明 | 流程类型 | |---------|------|---------| | **Google 账号** | 使用 Google 账号进行社交登录 | PKCE + 回调服务器 | | **GitHub 账号** | 使用 GitHub 账号进行社交登录 | PKCE + 回调服务器 | | **AWS Builder ID** | 使用 AWS Builder ID 进行授权 | Device Code Flow + 轮询 | ## 修改文件 ### 1. `src/oauth-handlers.js` (+463 行) **新增配置:** - `KIRO_OAUTH_CONFIG` - Kiro OAuth 配置常量(端点、作用域、超时等) - `activeKiroServers` - 活动回调服务器管理 - `activeKiroPollingTasks` - 活动轮询任务管理 **新增函数:** | 函数名 | 说明 | 导出 | |--------|------|------| | `handleKiroOAuth()` | 统一入口,根据 method 分发到不同处理函数 | ✅ | | `handleKiroSocialAuth()` | Google/GitHub 社交登录(PKCE 流程) | ❌ | | `handleKiroBuilderIDDeviceCode()` | AWS Builder ID 设备码流程 | ❌ | | `pollKiroBuilderIDToken()` | 轮询获取 Builder ID 令牌 | ❌ | | `stopKiroPollingTask()` | 停止轮询任务 | ❌ | | `startKiroProtocolHandler()` | 启动本地回调服务器 | ❌ | | `closeKiroServer()` | 关闭回调服务器 | ❌ | | `createKiroCallbackServer()` | 创建 HTTP 回调服务器 | ❌ | ### 2. `src/ui-manager.js` (+8 行) - 导入 `handleKiroOAuth` 函数 - 在 `/api/providers/{type}/generate-auth-url` 端点添加 `claude-kiro-oauth` 分支 ### 3. `static/app/provider-manager.js` (+107 行) **UI 增强:** - 将 `claude-kiro-oauth` 添加到 `oauthProviders` 列表,显示"生成授权"按钮 - 新增 `showKiroAuthMethodSelector()` 函数 - 显示认证方式选择对话框 - 新增 `executeGenerateAuthUrl()` 函数 - 执行授权链接生成 - 为 Kiro OAuth 添加专门的授权说明 ## API 使用方式 ```http POST /api/providers/claude-kiro-oauth/generate-auth-url Content-Type: application/json { "method": "google", // 可选值: 'google' | 'github' | 'builder-id' "saveToConfigs": true // 保存凭据到 configs/kiro/ 目录 } ``` **响应示例:** ```json { "success": true, "authUrl": "https://prod.us-east-1.auth.desktop.kiro.dev/login?...", "authInfo": { "provider": "claude-kiro-oauth", "authMethod": "social", "socialProvider": "Google", "port": 19876, "state": "xxx" } } ``` ## 凭据存储格式 **保存路径:** `configs/kiro/{timestamp}_oauth_creds.json` **Social Auth (Google/GitHub):** ```json { "accessToken": "eyJ...", "refreshToken": "...", "profileArn": "arn:aws:codewhisperer:us-east-1:...", "expiresAt": "2025-12-21T13:00:00.000Z", "authMethod": "social", "region": "us-east-1" } ``` **Builder ID (AWS SSO OIDC):** ```json { "accessToken": "eyJ...", "refreshToken": "...", "expiresAt": "2025-12-21T13:00:00.000Z", "authMethod": "builder-id", "clientId": "...", "clientSecret": "...", "region": "us-east-1" } ``` ## 与现有实现的一致性 | 对比项 | gemini-cli-oauth | openai-qwen-oauth | claude-kiro-oauth | |-------|-----------------|-------------------|-------------------| | OAuth 类型 | Google OAuth | Device Code | Social Auth + SSO OIDC | | 配置位置 | `OAUTH_PROVIDERS` | `QWEN_OAUTH_CONFIG` | `KIRO_OAUTH_CONFIG` | | 回调端口 | 8085 | - (轮询) | 19876-19880 | | 凭据目录 | `configs/gemini/` | `configs/qwen/` | `configs/kiro/` | | 处理函数 | `handleGeminiCliOAuth` | `handleQwenOAuth` | `handleKiroOAuth` | | 事件类型 | `oauth_success` | `oauth_success` | `oauth_success` | ## 测试验证 - [x] 语法检查通过 (`node --check`) - [x] Docker 镜像构建成功 - [x] UI 显示"生成授权"按钮 - [x] 认证方式选择对话框正常工作 - [x] WebSocket 事件广播机制复用 ## 相关文档 设计参考:基于 `gemini-antigravity` 和 `openai-qwen-oauth` 的现有实现模式 --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
kerem 2026-02-27 07:18:45 +03:00
Sign in to join this conversation.
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/AIClient-2-API-justlovemaki#267
No description provided.