Files
multica/apps/docs/content/docs/auth-tokens.zh.mdx
devv-eve 6ef711cd35 fix: gate dev verification code behind explicit env (#1773)
* fix: gate dev verification code behind explicit env

* docs: fold dev verification code into env table

* docs: clarify fixed verification code opt-in

---------

Co-authored-by: Eve <eve@multica.ai>
2026-04-28 15:14:07 +08:00

81 lines
4.0 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: 认证与令牌
description: Multica 有三种令牌——浏览器、CLI、守护进程各用一种。什么场景用哪种。
---
import { Callout } from "fumadocs-ui/components/callout";
Multica 有三种令牌,对应三种使用场景:浏览器 Web UI、命令行 / 脚本、守护进程daemon。三种都代表同一个你但作用域和有效期不同。
## 三种令牌
| 令牌 | 格式 | 用在哪 | 有效期 |
|---|---|---|---|
| **JWT Cookie** | `multica_auth` cookieHttpOnly | Web 浏览器 | 30 天 |
| **个人访问令牌PAT** | 以 `mul_` 开头 | CLI / 脚本 / 直接调 API | 默认不过期;用 API 创建时可选传 `expires_in_days` |
| **守护进程令牌Daemon Token** | 以 `mdt_` 开头 | Daemon 内部和 server 通信 | 由 daemon 自己管理 |
日常使用你只会直接接触前两种。**[守护进程](/daemon-runtimes)令牌**是 `multica daemon login` 自动生成和刷新的,你不用关心。
## 三种令牌能访问哪些 API
| API 路由 | JWT Cookie | PAT | Daemon Token |
|---|---|---|---|
| `/api/user/*`(用户级操作) | ✓ | ✓ | ✗ |
| `/api/workspaces/:id/*`(工作区级) | ✓ | ✓ | ✗ |
| `/api/daemon/*`daemon 专用) | ✗ | ✓ | ✓ |
| WebSocket `/ws`(实时推送) | ✓cookie | ✓(首条消息认证) | ✗ |
**PAT 几乎什么都能命中**——它代表"完整的你"。Daemon Token 能做的事非常有限,只够 daemon 拉任务和汇报结果。
**同样是访问 `/api/daemon/*`,两者作用域不同**PAT 代表**一整个用户**——进来之后能看到你所有的工作区daemon token 在创建时就绑死一个工作区,只能动这一个工作区的资源。生产部署用 daemon token 跑 daemon不要图方便用 PAT——权限会被放大。
## 登录
### Email + 验证码
1. 填邮箱server 发一封带 6 位验证码的邮件
2. 输入验证码server 签发 JWT cookie浏览器或交换出 PATCLI
<Callout type="warning">
**自部署运维注意**:公网部署时保持 `MULTICA_DEV_VERIFICATION_CODE` 为空。如果启用固定本地测试验证码,在 `APP_ENV` 非 production 时,任何能请求验证码的人都能用该固定值登录。详见 [自部署的认证配置](/auth-setup)。
</Callout>
### Google OAuth
点 **Sign in with Google**,走标准 OAuth 回调。自部署时需要配好 `GOOGLE_CLIENT_ID` / `GOOGLE_CLIENT_SECRET` / redirect URI——详见 [自部署的认证配置](/auth-setup)。
## 创建、查看、撤销 PAT
**创建**有两种方式:
- **Web UI**Settings → Personal Access Tokens → New token
- **CLI**`multica login` 在本地没有 PAT 时会自动创建一个
<Callout type="warning">
**PAT 创建时完整内容只显示一次。** 刷新页面或关闭对话框之后就看不到了。
Multica 在数据库里只保存 PAT 的哈希值——服务端也查不回来。创建时**立即复制保存**。丢了只能撤销后重新创建。
</Callout>
**查看**已签发的 PAT 列表(名字、创建时间、最后使用时间,**不含**完整令牌Settings → Personal Access Tokens。
**撤销** PAT在列表里点 Revoke。撤销是立即生效的——被撤销的 PAT 下一次请求就 401。
## 退出登录只是删本地令牌
执行 `multica auth logout` 或在 Web UI 点退出时:
- **本地令牌被清除** —— CLI 从 `~/.multica/config.json` 里删掉 PATWeb 删 cookie
- **服务端的 PAT 仍然有效** —— 如果登出前有人已经拿到过你的 PAT比如复制到了另一台机器他们**还能继续用**
<Callout type="warning">
**如果怀疑 PAT 泄露,不要只 logout。** 去 Settings → Personal Access Tokens 把那个 PAT **撤销**。撤销才会让泄露出去的令牌立刻失效。
</Callout>
## 下一步
- [CLI 命令速查](/cli) —— 每条 CLI 命令的认证是自动的
- [自部署的认证配置](/auth-setup) —— 自部署时怎么配邮件 / OAuth / signup 白名单
- [守护进程与运行时](/daemon-runtimes) —— 守护进程令牌是从哪来的