全部产品
Search
文档中心

应用身份服务:基于 IDaaS 的 Agent 身份安全最佳实践

更新时间:May 09, 2026

概述

本文档介绍如何基于阿里云 IDaaS Agent 身份安全能力,构建以 Agent 为中心的身份与访问管理体系。通过本方案,您可以实现 Agent 数字身份的安全管理、访问凭证(API Key、OAuth Token 等)的集中托管,以及 Agent 代表用户或自身安全地访问大模型、第三方服务及企业内部服务。

场景描述

随着 AI Agent 技术的广泛应用,Agent 需要安全地访问多种外部服务:

  • 大模型服务:Agent 需要调用大模型完成 AI 推理,本示例以百炼大模型为例。

  • 第三方服务:Agent 需要访问第三方服务,本示例以高德 MCP Server 为例。

  • 企业内部服务:Agent 需要访问企业内部服务,本示例以部署在函数计算上的服务为例。

传统方式将凭证硬编码在代码中或存储在配置文件里,存在凭证泄露、难以轮换等安全风险。本方案通过 IDaaS 实现:

  • 凭证集中托管到 IDaaS,Agent 运行时动态获取。

  • 基于 M2M(Machine to Machine)身份认证,确保只有授权的 Agent 可获取凭证。

  • 支持 Access Token 动态签发,实现细粒度访问控制。

方案架构

工作流程

image

工作流程说明

阶段

说明

关键凭证

用户身份认证

用户通过 SSO 登录获取访问 Agent 的 Access Token (AT_u)

AT_u (aud:Agent 的受众标识, scope:的权限标识)

用户身份校验

Agent 校验 AT_u 的有效性和权限

IDaaS JWKS 公钥

Agent 初始化

Agent 以自身 M2M 应用身份从 IDaaS 动态获取各类凭据

大模型 API Key、第三方服务 API Key、企业服务 Access Token(AT_s,aud:企业服务应用的受众标识,scope:企业服务应用的权限标识)

AI 请求处理

Agent 调用 LLM 和各类 Tool 完成 AI 请求

各类凭据动态使用

前提条件

  • 已在百炼平台创建具有百炼模型调用权限的 API 密钥。

  • 已在百炼平台的 MCP 广场添加高德地图。

  • 已开通阿里云函数计算服务。

  • 已在 IDaaS 中完成 Agent 身份安全配置,完成了 Agent 节点、客户端节点、大模型节点(使用百炼 API key)、三方服务节点(使用百炼 API key)和企业服务节点。详细配置可参考Agent 身份安全配置指导

配置步骤

步骤一:获取 Agent 示例代码

使用 git 克隆或直接下载Agent 示例代码。在本地打开终端,执行以下命令克隆示例代码。

git clone https://github.com/cloud-idaas/idaas-java-agent-id-demo.git

步骤二:配置 IDaaS SDK

  1. 生成 SDK 配置

    1. 进入 IDaaS EIAM 控制台

    2. 在左侧导航栏,选择 Agent 身份安全

    3. 进入 IDaaS 实例控制台,在左侧导航栏中选择 Agent 身份安全

    4. 定位目标 Agent,单击操作列下的编辑

    5. 单击 Agent 节点。

    6. 认证类型选择Client Secret凭证 ,单击生成SDK配置

    7. 复制配置内容。

    详细的配置说明,可参见环境准备

  2. 配置 SDK 文件

    将 SDK 配置内容粘贴到 Agent 示例代码目录的两个文件中:

    • src/main/resources/cloud_idaas_config_for_computer.json(本地部署使用)

    • src/main/resources/cloud_idaas_config_for_agent_run.json(AgentRun 部署使用)

步骤三:部署企业服务(函数计算)

3.1 部署函数计算

  1. 登录函数计算 FC 控制台

  2. 在左侧导航栏中选择 函数管理 > 函数列表

  3. 选择 Web 函数页签,单击创建 Web 函数

  4. 运行环境选择 自定义运行时 > Java > Java 17

  5. 代码上传方式选择使用示例代码,其他配置保持默认。

  6. 完成函数创建。

3.2 配置 JWT 认证

为函数的 HTTP 触发器配置 JWT 认证,确保只有持有 IDaaS 签发的 Access Token 才能访问企业服务。

  1. 进入 IDaaS 实例控制台,单击Agent 身份安全配置指导中创建的企业服务节点。

  2. 复制通用配置下的OIDC发现端点,在浏览器中打开,复制验签公钥端点(即jwks_uri字段的值)。

  3. 在浏览器中访问验签公钥端点,复制全部返回内容。

  4. 进入函数计算控制台,在函数列表中找到上一步中创建的函数,单击操作列下的配置

  5. 函数详情页签中单击函数拓扑图中的触发器认证方式选择JWT 认证

  6. 将验签公钥端点返回的内容填入 JWKS 配置项中。

  7. JWT Token 配置中将参数名称 设置为 Authorization

  8. 完成配置。

步骤四:部署 Agent

Agent 可以部署在本地或者阿里云函数计算的 Agent Run 中,根据需求选择其一即可。

本地部署

  1. 安装开发环境

    • 安装 JDK 17 或以上版本

    • 安装 Maven

  2. 打包项目

    在终端执行以下命令:

    cd idaas-java-agent-id-demo
    mvn clean package
  3. 设置环境变量

    以 Linux 操作系统为例:

    export IDAAS_CLIENT_SECRET={client_secret}
    export ENV_PRIVATE_KEY={private_key}
    export JWKS_ENDPOINT=https://xxx.aliyunidaas.com/api/v2/iauths_system/oauth2/jwks
    export AGENT_AUDIENCE=https://agentserver.example.com
    export AGENT_SCOPE=agent.access
    export ACCESS_IDENTITY=Machine
    export LLM_API_KEY_IDENTIFIER=llm_api_key
    export EXTERNAL_SERVER_API_KEY_IDENTIFIER=mcp_server_api_key
    export ENTERPRISE_SERVICE_SCOPE="https://mcpserver.com|mcp.access"
    export EXTERNAL_SERVER_URL=https://dashscope.aliyuncs.com/api/v1/mcps/amap-maps/mcp
    export ENTERPRISE_SERVICE_URL=https://xxx.{region_id}.fcapp.run

    环境变量名

    说明

    获取方式

    IDAAS_CLIENT_SECRET

    Agent 的 Client Secret 凭证(使用 Client Secret 认证时必填)

    Agent 身份安全配置指导中创建的 Agent 节点的通用配置中查看。

    ENV_PRIVATE_KEY

    Agent 的私钥(使用公私钥认证时必填)

    Agent 身份安全配置指导中,为 Agent 节点创建公私钥凭证时所上传公钥对应的私钥。

    JWKS_ENDPOINT

    IDaaS 验签公钥端点

    格式为:https://xxx.aliyunidaas.com/api/v2/iauths_system/oauth2/jwks。

    其中 xxx 取自步骤二:配置 IDaaS SDK的SDK 配置文件中 issuer 字段的对应值。

    AGENT_AUDIENCE

    Agent 的受众标识

    Agent 身份安全配置指导中创建的 Agent 节点的通用配置中查看。

    AGENT_SCOPE

    Agent 的权限标识

    Agent 身份安全配置指导中创建的 Agent 节点的权限配置中查看。

    ACCESS_IDENTITY

    Agent 身份模式:Machine(机器身份)或 Human(用户身份)

    本实例中使用 Machine(机器身份),适用于 Agent 以自身身份独立操作的场景,下游服务感知到的是 Agent 的机器身份

    LLM_API_KEY_IDENTIFIER

    大模型 API Key 标识

    Agent 身份安全配置指导中创建的大模型节点中查看。

    EXTERNAL_SERVER_API_KEY_IDENTIFIER

    第三方服务 API Key 标识

    Agent 身份安全配置指导中创建的三方服务节点中查看。

    ENTERPRISE_SERVICE_SCOPE

    企业服务访问范围(受众标识 | 权限标识)

    格式为:"受众标识 | 权限标识"。注意必须包含双引号。

    Agent 身份安全配置指导中创建的企业服务节点中的通用配置下查看受众标识,权限配置下查看权限标识

    EXTERNAL_SERVER_URL

    三方服务的 Endpoint

    高德 MCP Server HTTP Endpoint,从百炼平台的高德地图 MCP 中查看。

    ENTERPRISE_SERVICE_URL

    企业服务 Endpoint

    函数计算中部署的企业服务的访问地址,3.2 配置 JWT 认证中在函数详情页签中单击函数拓扑图中的触发器,查看公网访问地址

  4. 运行 JAR

    在终端执行以下命令:

    java -Dcloud_idaas_config_path=cloud_idaas_config_for_computer.json -jar target/idaas-java-agent-id-demo-1.0.jar

AgentRun 部署

  1. 打包并压缩 Agent 示例代码

    在终端执行以下命令:

    cd idaas-java-agent-id-demo
    mvn clean package
    cd ../
    zip -r idaas-java-agent-id-demo.zip idaas-java-agent-id-demo/
  2. 创建执行角色

    1. 登录访问控制 RAM 控制台

    2. 单击导航栏中的身份管理 > 角色

    3. 单击创建角色信任主体类型选择 云服务信任主体名称选择函数计算/FC

    4. 角色名称设置为 sample-fc-role

  3. 创建 Agent

    1. 登录函数计算 FC 控制台

    2. 在左侧导航栏中选择 函数智能 > 智能体 AgentRun

    3. 在角色授权检查中单击 一键授权(首次创建时需要)。

    4. 单击创建 Agent,选择通过代码创建

    5. 代码来源选择 上传代码包,运行时选择 Java 17

    6. 上传压缩好的 idaas-java-agent-id-demo.zip 文件。

    7. 启动命令填入:

      java -Dcloud_idaas_config_path=classpath:cloud_idaas_config_for_agent_run.json -jar idaas-java-agent-id-demo/target/idaas-java-agent-id-demo-1.0.jar
    8. 启动端口填入 9002

    9. 配置环境变量。

      环境变量名

      说明

      获取方式

      IDAAS_CLIENT_SECRET

      Agent 的 Client Secret 凭证(使用 Client Secret 认证时必填)

      Agent 身份安全配置指导中创建的 Agent 节点的通用配置中查看。

      ENV_PRIVATE_KEY

      Agent 的私钥(使用公私钥认证时必填)

      Agent 身份安全配置指导中,为 Agent 节点创建公私钥凭证时所上传公钥对应的私钥。

      JWKS_ENDPOINT

      IDaaS 验签公钥端点

      格式为:https://xxx.aliyunidaas.com/api/v2/iauths_system/oauth2/jwks。

      其中 xxx 取自步骤二:配置 IDaaS SDK的SDK 配置文件中 issuer 字段的对应值。

      AGENT_AUDIENCE

      Agent 的受众标识

      Agent 身份安全配置指导中创建的 Agent 节点的通用配置中查看。

      AGENT_SCOPE

      Agent 的权限标识

      Agent 身份安全配置指导中创建的 Agent 节点的权限配置中查看。

      ACCESS_IDENTITY

      Agent 身份模式:Machine(机器身份)或 Human(用户身份)

      本实例中使用 Machine(机器身份),适用于 Agent 以自身身份独立操作的场景,下游服务感知到的是 Agent 的机器身份

      LLM_API_KEY_IDENTIFIER

      大模型 API Key 标识

      Agent 身份安全配置指导中创建的大模型节点中查看。

      EXTERNAL_SERVER_API_KEY_IDENTIFIER

      第三方服务 API Key 标识

      Agent 身份安全配置指导中创建的三方服务节点中查看。

      ENTERPRISE_SERVICE_SCOPE

      企业服务访问范围(受众标识 | 权限标识)

      格式为:受众标识 | 权限标识。

      Agent 身份安全配置指导中创建的企业服务节点中的通用配置下查看受众标识,权限配置下查看权限标识

      EXTERNAL_SERVER_URL

      三方服务的 Endpoint

      高德 MCP Server HTTP Endpoint,从百炼平台的高德地图 MCP 中查看。

      ENTERPRISE_SERVICE_URL

      企业服务 Endpoint

      3.2 配置 JWT 认证中在函数详情页签中单击函数拓扑图中的触发器,可查看公网访问地址

    10. 执行角色选择之前创建的 sample-fc-role

    11. 单击 开始部署

    12. 部署完成后,在 Agent 卡片右下角单击详情,在左侧导航栏中选择版本与灰度,单击创建 Endpoint

步骤五:部署客户端

5.1 前端 UI 配置

修改 Agent 示例代码中的 frontend/config.js 文件:

window.APP_CONFIG = {
  API_URL: 'http://localhost:9002/openai/v1/chat/completions',
  IDAAS_AUTHORIZE_ENDPOINT: 'https://xxx.aliyunidaas.com/login/app/common/oauth2/authorize',
  IDAAS_LOGOUT_ENDPOINT: 'https://xxx.aliyunidaas.com/login/app/common/oauth2/logout',
  CLIENT_ID: '{client_id}',
  SCOPE: 'https://agentserver.example.com|agent.access',
};

字段名

说明

获取方式

API_URL

Agent 服务请求路径。

本地部署:http://localhost:9002/openai/v1/chat/completions

AgentRun 部署:{endpoint}/openai/v1/chat/completionsAgentRun 部署完成后,在左侧导航栏选择版本与灰度,将已创建的 endpoint 的访问地址填入 {endpoint}。

IDAAS_AUTHORIZE_ENDPOINT

IDaaS 授权端点。

格式为:

https://xxx.aliyunidaas.com/login/app/common/oauth2/authorize

其中 xxx 取自步骤二:配置 IDaaS SDK的SDK 配置文件中 issuer 字段的对应值。

IDAAS_LOGOUT_ENDPOINT

IDaaS 的登出端点。

格式为:

https://xxx.aliyunidaas.com/login/app/common/oauth2/logout

其中 xxx 取自步骤二:配置 IDaaS SDK的SDK 配置文件中 issuer 字段的对应值。

CLIENT_ID

IDaaS 中创建的客户端的 Client ID。

Agent 身份安全配置指导中创建的客户端节点中查看。

SCOPE

访问范围,格式为:受众标识|权限标识

Agent 身份安全配置指导中创建的 Agent 节点的通用配置中查看受众标识权限配置中查看权限标识

5.2 启动前端 UI

在终端执行以下命令(需安装 Nodejs):

cd frontend
npx http-server -p 9001

5.3 配置客户端应用

  1. 进入 IDaaS EIAM 控制台

  2. 在左侧导航栏中单击应用管理> M2M应用管理

  3. 定位Agent 身份安全配置指导中创建的客户端节点,单击操作列下的管理

  4. 单击登录访问页签,在授权模式下勾选隐式模式

  5. 隐式模式参数返回类型 Response Types选择 Token。

  6. 登录 Redirect URI填入前端 UI 启动地址:http://127.0.0.1:9001/

  7. 单击显示高级配置,登出回调地址填入前端 UI 启动地址:http://127.0.0.1:9001/

  8. 完成配置。

步骤六:验证配置

  1. 本地打开浏览器,访问 http://127.0.0.1:9001

  2. 单击 使用 IDaaS 账户登录,使用 IDaaS 账户登录。

  3. 登录成功后,在对话框中输入测试请求,例如:

    • "杭州现在的天气怎么样":Agent 将调用高德地图 MCP Tool 查询天气。

    • "调用我的企业服务":Agent 将调用企业服务 Tool。

错误处理

错误现象

可能原因

解决方案

Access Token 校验失败

Token 过期或无效

重新登录获取新的 Access Token

无法获取大模型 API Key

API Key 标识配置错误

检查 LLM_API_KEY_IDENTIFIER 环境变量是否正确

企业服务调用失败

Access Token 权限不足

检查 ENTERPRISE_SERVICE_SCOPE 是否包含正确的受众标识和权限标识

JWT 认证失败

JWKS 配置错误

确认函数计算触发器的 JWKS 配置是否正确

SDK 配置加载失败

配置文件路径错误

检查 -Dcloud_idaas_config_path 参数是否正确

附录

AgentRun 部署使用 OpenAPI 方式认证

在 AgentRun 场景下,IDaaS 支持 OpenAPI 认证方式:无需配置 Client Secret 或私钥,直接使用执行角色的 STS Token 访问 IDaaS OpenAPI,获取 Agent 的 Access Token。

修改 IDaaS SDK 配置

修改 src/main/resources/cloud_idaas_config_for_agent_run.json,在原有配置基础上新增 openApiEndpoint,并修改 authnConfiguration,其余字段保持不变:

{
    "idaasInstanceId": "idaas_xxx",      
    "clientId": "app_xxx",               
    "issuer":"https://xxx/api/v2/iauths_system/oauth2",               
    "tokenEndpoint": "https://xxx/api/v2/iauths_system/oauth2/token",
    "scope": "api.example.com|read:file",
    "openApiEndpoint":"eiam.[region_id].aliyuncs.com",
    "developerApiEndpoint":"eiam-developerapi.[region_id].aliyuncs.com",
    "authnConfiguration": {
      "identityType": "CLIENT",
      "authnMethod": "PLUGIN",
      "pluginName": "alibabacloudPluginCredentialProvider"
  }
}

详细的配置说明,可参见环境准备

执行角色配置

AgentRun 执行角色需具备调用 IDaaS GenerateOauthToken OpenAPI 的权限,示例权限策略如下:

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "eiam:GenerateOauthToken",
      "Resource": [
        "acs:eiam:{regionId}:{accountId}:instance/{InstanceId}/application/{ApplicationId}"
      ]
    }
  ]
}

{regionId}{accountId}{InstanceId}{ApplicationId} 替换为实际的地域 ID、阿里云主账号 ID、IDaaS 实例 ID 和 Agent ID。

创建权限策略与授权执行角色,详细配置可参见阿里云 OpenAPI 认证

AgentRun 部署服务时,需按上述说明修改 SDK 配置并将配置执行角色,其余流程均保持一致。