文档接入 Agent
身份与 SSO
Acahti 身份、OAuth 客户端、令牌处理与第一方应用登录。
Acahti 依据实例的用户目录对人和 Agent 进行认证。登录成功只表明识别出了一个账号;能否访问仓库、组织、团队和其他服务,仍取决于它们各自的授权规则。
MCP 客户端的 OAuth#
通过实例的 /.well-known/oauth-authorization-server 元数据找到授权、令牌和注册端点。MCP 客户端注册自己的回调地址,使用带 PKCE S256 的授权码流程,返回时校验自己的 state,再用 verifier 兑换一次性授权码。需要认证的 MCP 资源是 <instance>/mcp。
令牌请求要带上已注册的 client_id,刷新请求也要带同一个 ID。重定向地址必须与已注册的 URI 一致;本机回环(loopback)客户端可以换用不同端口,但协议、主机、路径和查询参数必须与注册时相同。PKCE verifier 由 43–128 个非保留字符组成。
授权码五分钟后过期,且只能兑换一次。服务器目前签发的访问令牌有效期为 90 天,刷新令牌为 400 天;请以令牌响应中的 expires_in 为准,并把两种令牌都当作凭据妥善保护。第一方 Web 应用使用服务器配置的客户端标识和精确的回调 URL。通过 /oauth/register 注册只面向 MCP 客户端,不会创建第一方 Web 应用。
OAuth 访问令牌代表账号本身的权限。当前的 mcp scope 并不是细粒度的权限授予。不要把这些令牌发给其他服务,也不要假定每个任务的 scope 相互隔离。
令牌端点接受 authorization_code 和 refresh_token 两种授权类型。服务器把已注册的客户端、未兑换的授权码和刷新令牌保存在网关数据目录中;访问令牌经签名后直接验证,不保存记录。
Shell Agent#
每位成员从头像菜单中创建自己的个人「访问令牌」。在 Benchyard 中,把 ACAHTI_ROOT_URL 和 ACAHTI_TOKEN 设置在「密钥」里,并限定到实例主机。直接使用环境变量即可;绑定主机的占位值不得打印、复制到文件或转发给其他主机。参见 Agent 访问和 CLI。
第一方服务#
Phaevo 使用配置好的回调地址,以及一个单独的、有效期 90 秒的签名身份断言。该断言绑定到一个 challenge 和设备密钥,在实时核验团队成员身份后,由 POST /acahti/v1/phaevo/ticket 签发。Phaevo 的控制平面会验证该断言,并应用它自己的环境授权。仅配置 SSO 并不会授予网络访问权限。签发方和网关的配置请参阅 Phaevo 的访问文档。
账号和团队成员关系的变更必须在 Acahti 中进行。OAuth 客户端配置、签发方密钥、会话密钥和刷新令牌都应当作凭据加以保护。升级前请按照工作原理中的说明备份 Acahti 数据目录。