CaelLabID:修订间差异
外观
创建页面,内容为“'''CaelLabID''' 是虚舟实验室(CaelLab)推出的统一身份认证系统,基于 OAuth 2.0 标准协议构建,为第三方应用提供安全的用户身份验证与授权服务。<ref name="docs">[https://id.caellab.com/docs 概述 | CaelLabID 开放平台]</ref>该系统允许应用接入 CaelLabID 的用户体系,用户可通过 CaelLabID 账户登录第三方应用,无需为每个应用单独注册。<ref name="docs" />{{Infobox|标题=CaelLab…” |
无编辑摘要 |
||
| 第3行: | 第3行: | ||
{{!}} CaelLabID | {{!}} CaelLabID | ||
{{!}}- | {{!}}- | ||
! 所属 | ! 所属团队 | ||
{{!}} | {{!}} [[虚舟实验室(CaelLab)]] | ||
{{!}}- | {{!}}- | ||
! 协议标准 | ! 协议标准 | ||
2026年7月2日 (四) 12:40的版本
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]
- 引导用户授权:第三方应用将用户浏览器重定向至 CaelLabID 的授权端点(`/oauth/authorize`),用户登录并确认授权。[2]
- 处理回调:用户授权后,CaelLabID 通过 302 重定向将授权码(code)返回至应用指定的回调地址。[2]
- 换取令牌:应用服务端使用授权码,通过向 `/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]