认证与 OAuth

本地认证

CBCTF 默认使用用户名 + 密码登录。

JWT 配置

配置项说明
gin.jwt.secretJWT 签名密钥,必须替换默认值

设备绑定

前端会使用 FingerprintJS 生成设备标识,并通过请求头 X-M 发送给后端。JWT 中也会绑定该标识;若同一账号从不同设备使用,可能触发 token_magic 作弊检测。

邮箱验证

需要先配置 SMTP,并为用户分配 self:activate 权限。用户调用 POST /me/activate 后,平台发送验证邮件;用户访问邮件中的 /verify 链接后,账号会被标记为已验证。

OAuth / OIDC

平台支持配置多个 OAuth / OIDC 提供商。公开入口为:

  • GET /oauth
  • GET /oauth/{uri}
  • GET /oauth/{uri}/callback
  • GET /oauth/token

后端完成第三方回调后,会跳转到前端 #/oauth/callback 页面继续登录流程。

OAuth 配置字段

字段说明
provider提供商名称
auth_url授权端点
token_urlToken 端点
user_info_url用户信息端点
callback_url第三方回调地址
client_id客户端 ID
client_secret客户端密钥
uri平台路由标识,对应 /oauth/{uri}
id_claim用户 ID 提取表达式
name_claim用户名提取表达式
email_claim邮箱提取表达式
picture_claim头像提取表达式
description_claim简介提取表达式
groups_claim用户组字段
admin_group命中后自动加入 admin 用户组的组名
default_group首次登录后自动加入的默认分组
on是否启用该提供商

GitHub 示例

GitHub OAuth App 回调地址示例:https://your.domain.com/oauth/github/callback

{
  "provider": "Github",
  "auth_url": "https://github.com/login/oauth/authorize",
  "token_url": "https://github.com/login/oauth/access_token",
  "user_info_url": "https://api.github.com/user",
  "callback_url": "https://your.domain.com/oauth/github/callback",
  "client_id": "your-client-id",
  "client_secret": "your-client-secret",
  "uri": "github",
  "id_claim": "{id}",
  "name_claim": "{name}",
  "email_claim": "{email}",
  "picture_claim": "{picture_url}",
  "description_claim": "{bio}"
}

注册控制

配置说明
registration.enabled: true开放公开注册
registration.enabled: false禁止自助注册,仅管理员可创建用户
registration.default_group注册用户自动加入的分组 ID

多提供商并存

平台可同时启用本地登录和多个 OAuth 提供商。登录页会展示所有启用的提供商入口。