API Key 认证
API Key 通过唯一字符串密钥验证请求方身份、授权访问 API 资源。VeADK 约定将 API Key 放在 URL 的token 参数中传递。
API Key 仅适用于 A2A / MCP Server 部署模式,不建议在 VeADK Web 部署模式中使用;后者更推荐 OAuth2。
--auth-method=api-key 启用。此后用户访问应用时,API 网关会校验 token URL 参数中携带的 API Key。
OAuth2 单点登录
OAuth2 是一套开放的授权框架,通过令牌而非直接暴露账号密码,实现第三方应用对资源的有限访问;用户一次登录后即可免重复验证地访问多个关联应用。VeADK 提供两种接入方式:API 网关模式
适用于通过 VeFaaS 部署的 VeADK Web 应用,由 API 网关处理 OAuth2 流程。API 网关模式需要 4.0.0 及以上版本的 API 网关。
--auth-method=oauth2;VeADK 会自动创建 Identity 用户池与客户端。若要复用已有资源,部署时用 --user-pool-name 与 --client-name 指定。
部署后在 Agent Identity 中创建用户:
1
进入用户池
登录火山引擎控制台,进入 Agent Identity 服务,在左侧选择 身份认证 › 用户池管理,选择用户池。
2
新建用户
在用户池的 用户 标签页点击 新建用户,填写信息并确定。
Authorization 请求头取得用户的 JWT 令牌。
Starlette / FastAPI 中间件
适用于本地开发或自托管部署,通过 VeADK 提供的中间件在应用内处理 OAuth2,支持所有基于 Starlette 的框架(含 FastAPI)。推荐用OAuth2Config.from_veidentity() 自动配置 VeIdentity 用户池:
FastAPI() 换成 Starlette() 即可。
复用已有资源时关闭自动创建:
OAuth2Config:
可配置跳过认证的路径:
exempt_paths=["/health", "/metrics"](精确匹配)、exempt_prefixes=["/public/", "/static/"](前缀匹配)。中间件按请求类型响应:浏览器请求重定向到登录页,API 请求返回 401。API 请求通过 Accept: application/json 请求头、路径前缀(默认 /api/)或 X-Requested-With: XMLHttpRequest 识别,可用 api_path_prefixes 自定义。
OAuth2Config.from_veidentity() 关键参数:
OAuth2Config 关键参数:
默认的
InMemoryStateStore 仅适用于单进程部署。分布式场景需实现基于 Redis 等外部存储的 state store,并通过 setup_oauth2(app, config, state_store=...) 传入。OAuth2 JWT 认证
OAuth2 JWT 认证将 OAuth2 授权框架与 JWT 结合,用 JWT 承载授权令牌,适用于 A2A / MCP Server。 在脚手架创建智能体时选择 OAuth2,或为已有项目在部署时加上--auth-method=oauth2;VeADK 会自动创建 Identity 用户池,需要复用时用 --user-pool-name 指定。随后在 Agent Identity 的用户池中新建 M2M 类型客户端,用其凭据换取 JWT 令牌:
Authorization 请求头取得。
向下游 A2A 智能体传递令牌
当 AgentKit A2A Registry 已启用,且当前智能体需要调用 Registry 中的下游智能体时,VeADK 1.0.3 可以沿调用链传递以下入站凭证:
只有 Bearer 形式的
Authorization 值会被传递。若下游 OAuth2 请求使用入站 JWT 后返回 401,VeADK 会尝试使用下游 Agent Card 中的 M2M OAuth2 配置重新获取令牌并重试一次。
在无法从入站请求取得 TIP Token 的任务中,也可以通过环境变量显式配置。以下名称按顺序兼容,推荐使用第一个:
AGENTKIT_UPSTREAM_TIP_TOKEN、A2A_REGISTRY_UPSTREAM_TIP_TOKEN、VE_TIP_TOKEN、X_VE_TIP_TOKEN 与 TIP_TOKEN。