CaelLabID

云云​(留言 | 貢獻)2026年7月2日 (四) 12:40的修訂 (创建页面,内容为“'''CaelLabID''' 是虚舟实验室(CaelLab)推出的统一身份认证系统,基于 OAuth 2.0 标准协议构建,为第三方应用提供安全的用户身份验证与授权服务。<ref name="docs">[https://id.caellab.com/docs 概述 | CaelLabID 开放平台]</ref>该系统允许应用接入 CaelLabID 的用户体系,用户可通过 CaelLabID 账户登录第三方应用,无需为每个应用单独注册。<ref name="docs" />{{Infobox|标题=CaelLab…”)
(差異) ←上個修訂 | 最新修訂 (差異) | 下個修訂→ (差異)

CaelLabID 是虛舟實驗室(CaelLab)推出的統一身份認證系統,基於 OAuth 2.0 標準協議構建,為第三方應用提供安全的用戶身份驗證與授權服務。[1]該系統允許應用接入 CaelLabID 的用戶體系,用戶可通過 CaelLabID 帳戶登錄第三方應用,無需為每個應用單獨註冊。[1]

概述

CaelLabID 是虛舟實驗室的統一身份認證系統,遵循 OAuth 2.0 標準協議中的 Authorization Code Grant(授權碼模式)流程。[1]該系統旨在為開發者提供標準化的身份認證接入方案,使第三方應用能夠安全地接入 CaelLabID 用戶體系,獲取用戶授權並調用用戶基本信息。[1]

系統在服務端不存儲用戶明文密碼,而是採用 SHA-256 哈希算法進行存儲,以增強安全性。[1]

核心功能

CaelLabID 提供以下核心功能:

  • OAuth 2.0 授權碼流程:標準化的授權碼模式,支持第三方應用通過用戶授權獲取訪問令牌。[1]
  • 跨應用隱私保護:為每個應用分配獨立的用戶標識符(sub),防止第三方應用通過用戶 ID 進行跨應用關聯追蹤。[1]
  • Refresh Token 輪換:每次刷新令牌時簽發新的 Refresh Token,舊的令牌自動失效,提升會話安全性。[1]
  • Token 撤銷:支持主動撤銷 Access Token 和 Refresh Token。[1]

技術規格

支持的 Scope

CaelLabID 當前僅開放 `openid` scope,用於獲取用戶的基本身份標識。[1] `profile`(用戶名、顯示名、頭像、簡介)和 `email`(郵箱地址及驗證狀態) scope 計劃在後續版本中逐步開放。[1]

令牌有效期

系統對各類型令牌設定了以下有效期:[1]

  • 授權碼(Authorization Code):10 分鐘
  • Access Token:1 小時

OAuth 2.0 接入流程

CaelLabID 的 OAuth 2.0 接入遵循標準的授權碼模式,整體流程如下:[2]

  1. 引導用戶授權:第三方應用將用戶瀏覽器重定向至 CaelLabID 的授權端點(`/oauth/authorize`),用戶登錄並確認授權。[2]
  2. 處理回調:用戶授權後,CaelLabID 通過 302 重定向將授權碼(code)返回至應用指定的回調地址。[2]
  3. 換取令牌:應用服務端使用授權碼,通過向 `/oauth/token` 端點發起 POST 請求,換取 Access Token 和 Refresh Token。[2]

授權端點

授權 URL 構造方式如下:[2]

https://id.caellab.com/oauth/authorize?response_type=code&client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_CALLBACK_URL&scope=openid&state=RANDOM_STRING

主要請求參數包括:[2]

  • `response_type`:固定值 `code`
  • `client_id`:應用註冊時獲得的 Client ID
  • `redirect_uri`:回調地址,須與註冊時填寫的一致
  • `scope`:權限範圍,當前僅支持 `openid`
  • `state`:推薦使用的隨機字符串,用於防止 CSRF 攻擊

令牌端點

換取 Access Token 需向 `/oauth/token` 端點發起 POST 請求,支持以下兩種認證方式:[2]

  • POST body 傳參:在請求體中傳遞 `client_id` 和 `client_secret`
  • HTTP Basic Auth:在 Authorization 頭中使用 Base64 編碼的 `client_id:client_secret`

成功響應返回 JSON 格式數據,包含 `access_token`、`token_type`、`expires_in`、`refresh_token` 等欄位。[2]

參考文獻