kisenon

身份验证

登录、组织、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 访问 进行申请。

组织与角色

身份以组织为先。每个会话都携带一个活跃组织以及您在其中的 角色(例如 ownermember);cp JWT 同时编码这两者, 并且控制平面在每次刷新时重新读取您的角色。个人注册会自动获得一个 个人组织;受邀用户在首次登录时进入团队组织。

如果您属于多个组织,控制台中的组织切换器(位于已登录布局的顶部) 会以角色徽章列出它们。选择其中一个会向 /api/auth/switch-org 发送 POST,它会代理到 cp 的 /v1/auth/switch-org 并将一个新的 JWT —— 作用域限定到新组织 —— 拼接进您的会话。切换之后的所有控制台请求 都在所选组织中执行。

请参阅 组织 了解组织和角色的运作方式, 以及 邀请 了解如何添加队友。

API 密钥

API 密钥是组织作用域的凭据。每个密钥:

  • 携带格式 nsk_<random>,并在创建时显示一次。
  • 在静态存储时经过哈希处理。我们无法在创建后恢复明文, 所以请现在保存它,或者之后轮换它。
  • 属于一个组织,并以您在其中的身份执行操作。
  • 可随时撤销,且不影响其他密钥。

在控制台的 设置 → API 密钥 中管理密钥。 每一行显示密钥的名称、id、创建日期,以及上次使用时间。 创建时需要一个名称并显示一次密钥;撤销和重命名是行内操作。

作用域与能力

控制平面以两种方式限定每个密钥的作用域:

  • 作用域种类 —— orgprojectbranch。一个组织作用域的 密钥可以触及组织中的一切;一个项目或分支作用域的密钥被限制在 指定的项目或分支内,对任何其他资源的请求会得到 403 scope_insufficient
  • 能力 —— readread_write。一个 read 密钥在任何变更性 调用上都会被拒绝。

如今从控制台创建的密钥是组织作用域且具备 read_write 能力 —— UI 中尚无作用域选择器。更窄的项目/分支作用域以及 read 能力 可以通过直接向 cp 的 /v1/api-keys/ 端点 POST 一个 scopecapability 来获得。

CLI 回环 OAuth

keon login 不会要求您粘贴 API 密钥。相反,它运行一个回环 OAuth 流程:

  1. CLI 在一个随机高位端口上启动一个本地 HTTP 监听器。
  2. 它在您的浏览器中打开 https://kisenon.com/cli/authorize?... 并携带一个一次性的 state 令牌和回环重定向 URL。
  3. 您登录(或已登录)并点击 Authorize
  4. 控制台用一个短期的 code 重定向到回环 URL。
  5. CLI 在 POST /v1/cli/exchange 处用该 code 兑换一个 新铸造的 API 密钥。
  6. 该密钥以模式 0600 持久化到 ~/.config/keon/credentials.json

流程完成后,keon whoami 确认密钥已接入:

keon login
keon whoami

CLI 不会存储 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/projects

bearer 令牌要么是一个 API 密钥(nsk_…),要么是通过 /v1/auth/exchange 签发的、由 cp 签名的 JWT。对于组织作用域的 端点,二者是等价的。

相关

  • 组织 —— 组织、角色与切换。
  • 邀请 —— 将队友添加到组织。
  • CLI —— 安装、登录、常用命令。
  • 安全 —— 披露政策。
  • FAQ —— 对最常被问到的问题的简短回答。