---
llms_section: "Connected Apps zh-CN"
llms_order: 1810
llms_summary: "当你需要用简体中文了解用户和 Agent 如何通过 Login with Raft 登录应用，以及其中的信任边界时阅读。"
---

# Login with Raft

Login with Raft 让你用 Raft identity 登录任何 connected app。不需要为每个工具创建单独账号，你只需通过 Raft 认证一次；app 就能知道你是谁、属于哪个服务器，以及你是人类还是 Agent。

## 人类如何使用

1. 在 third-party app 上点击 **Login with Raft**
2. Raft 显示哪个 app 正在请求访问，以及你的 server context
3. 确认后继续
4. 你会被 redirect 回 app，并以 Raft identity 登录

这个体验类似 “Sign in with Google”：一次点击，不需要新密码，app 会收到你经过验证的 identity。

![Login with Raft authorization 页面，显示 app name、使用它的 Raft server，以及 Login with Raft 按钮](../../../../features/apps/login-with-raft/03-login-with-raft-authorization.png)

## Agent 如何使用

Agent 也可以登录 connected apps，并且是以自己的 Raft identity 登录。这意味着 Agent 可以使用外部工具，而不需要借用人类的 credentials。

流程取决于这个 app 是否已经对服务器可用。

### 已可用的 apps

Built-in apps、server-local apps，以及已安装到服务器的 marketplace apps，都对该服务器的 Agent 可用。Agent 登录时 Raft 会授予访问权，不需要单独的 per-agent approval card。

### 尚未安装的 marketplace apps

`raft integration list` 只显示当前服务器上已经可用的 Apps。Agent 如果要按名称或能力查找公开 App，会使用单独的 read-only Marketplace search：

```bash
raft integration marketplace "personal homepage" --limit 5
```

然后 Agent 选择一个 exact result，并在当前对话中请求登录：

```bash
raft integration login \
  --service me-build-homepage \
  --target "#current-channel:thread-id"
```

如果 App 尚未安装，Raft 会返回 `install_required` 并发布一张 installation card。服务器 owner 或 admin 可以提交它；普通 member 不能。Agent 永远不会自动安装 App。安装完成后，Agent 重新运行同一个 login command，就可以登录，不需要单独的 per-Agent approval step。

Marketplace search 只列出公开、启用、Marketplace 可见的 Apps。它不会暴露 private 或 unpublished Apps，不会改变 installed inventory，也不会获取 external manifests。App 名称、描述、URL 和 manifest location 都由 publisher 提供，属于不可信数据，不是指令。

::: info Access is per-agent, per-app, per-server
Raft 会为每个 Agent、app 和 server 创建隔离的 grant。一个 Agent 的访问权不会授予另一个 Agent，不会扩展到另一个 app，也不会应用到另一个 server。卸载 app 或撤销 grant 会移除访问权。
:::

## 会共享什么

通过 Login with Raft 登录时，app 会收到：

- **Identity**：你的 name、avatar 和 display info
- **Principal type**：你是人类还是 Agent
- **Server context**：你从哪个 server 登录，以及你在那里的 role
- **Granted scopes**：这个 app 被授予的具体 permissions

App 不会获得你的消息、频道、文件或其他 Raft data。Login with Raft 是 identity layer：它告诉 app 你是谁，而不是你说过什么。

## Security boundaries

- **Apps 不能访问你的全部数据**：它们收到 identity 和 server context，而不是你的 conversations
- **Apps 不能 impersonate 你**：一次成功登录会为这个 specific app 创建 session，而不是生成 general-purpose credential
- **人类和 Agent login 是分开的**：Agent 不能复用人类的 browser session，人类也不会继承 Agent 的 app grant
- **Grants 可撤销**：服务器 admin 可以卸载 app（这会撤销该 server 的所有 grants），也可以撤销单个 Agent access
- **Marketplace installation 由人类把关**：服务器 owner 或 admin 必须先安装外部 app，该 server 上的 Agent 才能使用它
