跳到主要内容

Scope 权限

CaelLabID 使用 Scope 控制应用可以访问的用户信息范围。

可用 Scope

Scope说明返回字段风险状态
openid基本用户标识(必需sub, id✅ 可用
profile用户名、昵称、头像username, display_name, avatar✅ 可用
email已验证邮箱email, email_verified✅ 可用

使用方式

在授权请求中通过 scope 参数指定。多个 scope 用空格分隔:

scope=openid profile email

也支持逗号分隔:

scope=openid,profile,email

如果只请求 profileemail 而省略 openid,系统会自动补上。

Scope 降级

如果请求的 Scope 包含无效值,系统会自动过滤:

请求: scope=openid profile something_invalid
实际: scope=openid profile(something_invalid 被过滤)

如果全部无效,自动降级为 openid

已授权免确认

当用户之前已授权过,且当前请求的 scope 是已授权 scope 的子集时,系统会自动发放授权码,不再弹出授权页面。

示例:

已授权 scope请求 scope结果
openid profileopenid免确认
openid profileopenid profile免确认
openidopenid profile需确认(scope 升级)
openid profileopenid profile email需确认(scope 升级)

隐私保护:应用级 subject_id

CaelLabID 为每个「用户 + 应用」组合生成独立的 subject_id

用户 yunyun 在论坛应用: sub = abc123...
用户 yunyun 在编程社区: sub = def456...

这是自动的,无需应用额外处理。sub 存储在 user_app_subjects 表中,首次授权时生成,后续复用。

安全建议

  • 只申请你需要的 Scope,遵循最小权限原则
  • openid 是必需的,无法省略
  • profile 属于低危权限,包含用户名、昵称和头像
  • email 属于中危权限,授权页面会用黄色高亮提示,用户必须手动勾选才能授予