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 的调用链中,VeADK 可以把当前请求携带的身份凭证传递给下游智能体,使下游继续按原用户身份和信任关系执行授权。
对于声明 OAuth2 的下游智能体,VeADK 先使用透传的 Bearer JWT 发起请求。只有下游明确返回
401 Unauthorized 时,才会改用 OAuth2 M2M 令牌重试一次。其他状态码或调用错误不会触发 M2M 回退,避免把业务错误或服务故障误判为身份令牌失效。
技能沙箱中的身份透传
execute_skills 在调用技能沙箱时同样会将入站身份凭证转发给沙箱。VeADK 从凭证服务中读取凭证键为 inbound_auth 的入站凭证,并以 inbound_auth 请求头发送到沙箱的 A2A 端点,使沙箱中的工作流能够以原始用户身份执行。若当前请求未携带入站凭证,则不附加该请求头。详见代码沙箱中的技能沙箱执行部分。