VolcengineVolcengine ADK

使用 OAuth2 M2M 进行出站认证

OAuth2 M2M(Machine to Machine)用于后端服务间认证,比 API Key 更安全,且支持令牌自动刷新。它无需用户参与——凭据由客户端自身的 Client ID / Secret 换取。需要用户授权的场景见 OAuth2 用户委托。本页只讲 M2M 特有的部分;VeIdentityFunctionTool / VeIdentityMcpToolset 的通用用法、into 默认值与常见问题见安全概述

创建 OAuth2 M2M 凭据

  1. 登录火山引擎控制台,进入 Agent Identity 服务。
  2. 选择 身份认证 > 出站凭据托管 > OAuth Client
  3. 点击 新建 > 新建 OAuth Client
  4. OAuth2 流程 中选择 机器对机器(M2M),点击 确定

配置 Provider 时可选三种来源:

来源需填写
内置 Vendor(推荐):Lark / Coze / Google / GitHubClient ID、Client Secret
OIDC 配置(自定义)发行者 URL(Discovery URL,如 https://accounts.google.com/.well-known/openid-configuration)、Client ID、Client Secret、权限范围(至少含 openid
自定义 OAuth2 配置Client ID、Client Secret、权限范围、Issuer、授权端点、令牌端点

在代码中使用

oauth2_auth(..., auth_flow="M2M") 创建配置。OAuth2 凭据默认注入到 access_token 参数,因此无需设置 into

from veadk.integrations.ve_identity import VeIdentityFunctionTool, oauth2_auth
import aiohttp

async def call_service(access_token: str, endpoint: str):
    headers = {"Authorization": f"Bearer {access_token}"}
    async with aiohttp.ClientSession() as session:
        async with session.get(endpoint, headers=headers) as resp:
            return await resp.json()

auth_config = oauth2_auth(
    provider_name="my-oauth2-m2m-provider",
    scopes=["api://your-service/.default"],
    auth_flow="M2M",
)
tool = VeIdentityFunctionTool(func=call_service, auth_config=auth_config)

同一配置也可用于 VeIdentityMcpToolset(用法同 API Key 页面,仅 auth_config 不同)。

scopes 接受多个权限范围;省略时使用控制台为该 Provider 配置的默认范围:

auth_config = oauth2_auth(
    provider_name="my-provider",
    scopes=["api://service1/.default", "api://service2/.default"],
    auth_flow="M2M",
)

与 API Key 的区别

API Key 是固定凭证;M2M 用 Client ID / Secret 换取短期令牌,由 Agent Identity 自动刷新,更适合生产环境。M2M 是服务自身的身份,不涉及用户登录;若需代表某个用户访问,请用 OAuth2 用户委托

本页导航