身份验证
登录、组织、API 密钥,以及 CLI 回环 OAuth 流程。
Kisenon 有两种身份验证方式:
- Web 登录 —— 在控制台上通过 NextAuth 使用 Google 或 GitHub OAuth。
- API 密钥 —— 一个
nsk_…令牌,任何 HTTP 客户端(包括keon) 都可以将其作为Bearer凭据出示。
同一个密钥可以驱动 CLI、CI 以及一次性的 curl 调用。
Web 登录
打开 kisenon.com 并点击 Sign in。选择
Google 或 GitHub。NextAuth 处理 OAuth 流程,然后通过
POST /v1/auth/exchange 将提供方的 id 令牌兑换为一个控制平面 JWT。
这个由 cp 签发的 JWT 就是之后每个控制台请求所携带的凭据。
该 JWT 是短期的 —— 在签发后大约 15 分钟过期。在您处于活跃状态时,
NextAuth 会在后台通过将当前 JWT 重新出示给 POST /v1/auth/refresh
来刷新它,从而铸造一个新的。刷新凭据就是 JWT 本身,在从登录起
12 小时的窗口内有效;一旦该窗口结束,下一个请求会将您重定向到登录页。
Alpha 期间的访问
登录是受限的。只有在 alpha 允许列表上的邮箱才能完成兑换 ——
一个未列入的账户会从 /v1/auth/exchange 收到 403 email_not_allowed,
且永远不会获得会话。已经登录但尚未获批的允许列表账户会处于
pending 状态:控制台将它们重定向到 /pending,而控制平面会对
受限的 API 调用回应 403 alpha_pending,直到运维人员批准该账户。
请参阅 Alpha 访问 进行申请。
组织与角色
身份以组织为先。每个会话都携带一个活跃组织以及您在其中的
角色(例如 owner 或 member);cp JWT 同时编码这两者,
并且控制平面在每次刷新时重新读取您的角色。个人注册会自动获得一个
个人组织;受邀用户在首次登录时进入团队组织。
如果您属于多个组织,控制台中的组织切换器(位于已登录布局的顶部)
会以角色徽章列出它们。选择其中一个会向 /api/auth/switch-org 发送
POST,它会代理到 cp 的 /v1/auth/switch-org 并将一个新的 JWT ——
作用域限定到新组织 —— 拼接进您的会话。切换之后的所有控制台请求
都在所选组织中执行。
请参阅 组织 了解组织和角色的运作方式, 以及 邀请 了解如何添加队友。
API 密钥
API 密钥是组织作用域的凭据。每个密钥:
- 携带格式
nsk_<random>,并在创建时显示一次。 - 在静态存储时经过哈希处理。我们无法在创建后恢复明文, 所以请现在保存它,或者之后轮换它。
- 属于一个组织,并以您在其中的身份执行操作。
- 可随时撤销,且不影响其他密钥。
在控制台的 设置 → API 密钥 中管理密钥。 每一行显示密钥的名称、id、创建日期,以及上次使用时间。 创建时需要一个名称并显示一次密钥;撤销和重命名是行内操作。
作用域与能力
控制平面以两种方式限定每个密钥的作用域:
- 作用域种类 ——
org、project或branch。一个组织作用域的 密钥可以触及组织中的一切;一个项目或分支作用域的密钥被限制在 指定的项目或分支内,对任何其他资源的请求会得到403 scope_insufficient。 - 能力 ——
read或read_write。一个read密钥在任何变更性 调用上都会被拒绝。
如今从控制台创建的密钥是组织作用域且具备 read_write 能力 ——
UI 中尚无作用域选择器。更窄的项目/分支作用域以及 read 能力
可以通过直接向 cp 的 /v1/api-keys/ 端点 POST 一个 scope 和
capability 来获得。
CLI 回环 OAuth
keon login 不会要求您粘贴 API 密钥。相反,它运行一个回环 OAuth 流程:
- CLI 在一个随机高位端口上启动一个本地 HTTP 监听器。
- 它在您的浏览器中打开
https://kisenon.com/cli/authorize?...并携带一个一次性的 state 令牌和回环重定向 URL。 - 您登录(或已登录)并点击 Authorize。
- 控制台用一个短期的 code 重定向到回环 URL。
- CLI 在
POST /v1/cli/exchange处用该 code 兑换一个 新铸造的 API 密钥。 - 该密钥以模式
0600持久化到~/.config/keon/credentials.json。
流程完成后,keon whoami 确认密钥已接入:
keon login
keon whoamiCLI 不会存储 OAuth code、state,或任何提供方侧的令牌;只存储 最终得到的 API 密钥。可随时从控制台轮换或撤销该密钥。
登出
keon logout 会在服务器上撤销本地 API 密钥并移除凭据文件。
登出后,同样的 keon login 流程会铸造一个新密钥 ——
旧凭据无法重新激活。
keon logout控制台登出会清除浏览器会话并重定向到落地页;它不会撤销您通过 CLI 铸造的 API 密钥。请使用 设置 → API 密钥 单独撤销那些密钥。
来自任意客户端的 Bearer 身份验证
任何会讲 HTTP 的客户端都可以访问控制平面:
curl -H "Authorization: Bearer $KISENON_API_KEY" \
https://api.test.kisenon.com/v1/projectsbearer 令牌要么是一个 API 密钥(nsk_…),要么是通过
/v1/auth/exchange 签发的、由 cp 签名的 JWT。对于组织作用域的
端点,二者是等价的。