鉴权、身份与 Profile

lark-cli 的鉴权不是单独的 auth login 问题,而是 config、credential、profile、identity 和 strict mode 共同组成的运行时策略。

用户路径

README 的推荐路径是:

lark-cli config init
lark-cli auth login --recommend
lark-cli auth status

auth 子命令包括:

命令作用
auth loginOAuth 登录,可交互选择 scope 或用 flag 指定
auth logout退出并删除凭证
auth status显示当前登录状态和已授权 scope
auth check检查某个 scope,适合脚本 predicate
auth scopes列出 app 可用 scopes
auth list列出已登录用户

Profile 由 cmd/profile 管理,config 由 cmd/config 管理。凭证存储和外部凭证 provider 则在 internal/credentialinternal/keychainextension/credential 一带。

--as 的执行身份

Factory.ResolveAs 是身份选择的核心。它的优先级大致是:

  1. 用户显式传了 --as user--as bot,优先使用;
  2. strict mode 如果强制身份,则使用强制身份;
  3. credential hint 如果配置了 default-as,则使用它;
  4. 否则根据 hint 自动判断;
  5. 没有 hint 时默认偏向 bot。

命令执行前还会用 CheckIdentity 确认该 API 是否支持当前身份;strict mode 开启时,CheckStrictMode 会拒绝不符合策略的身份。

为什么 whoami 重要

v1.0.61 新增 whoami,这不是小工具,而是 Agent 自动化里的安全检查点。模型在执行写入前应该知道“我现在代表谁”:user 身份会触达个人数据,bot 身份会触达 app 被授权的数据。

源码阅读建议

想理解读这里
登录流程cmd/auth/login*.go
scope 检查cmd/auth/check.gocmd/auth/scopes.go
profile 管理cmd/profile/*.go
app 初始化cmd/config/init*.go
身份推断internal/cmdutil/factory.go
外部凭证扩展extension/credential/*

下一篇:输出与错误契约