在Agent中安全访问钉钉
本教程为您演示如何使用Agent Identity的能力,让您的Agent调用钉钉开放平台并将数据安全地写入钉钉文档。
架构

准备工作
环境要求
本地测试环境需要安装Python(版本≥ 3.10)以及pip包管理器。
用户及权限要求
用户要求:
钉钉开放平台管理员:用于管理钉钉开放平台的应用
脚本执行用户(RAM用户):用于执行准备脚本及本地应用测试。
RAM权限要求:
脚本执行用户需要具备以下权限:
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "agentidentity:*", "Resource": "*" }, { "Effect": "Allow", "Action": "agentidentitydata:*", "Resource": "*" }, { "Effect": "Allow", "Action": "ram:CreateServiceLinkedRole", "Resource": "*", "Condition": { "StringEquals": { "ram:ServiceName": ["agentidentity.aliyuncs.com"] } } }, { "Effect": "Allow", "Action": [ "ram:CreateApplication", "ram:CreateRole", "ram:CreatePolicy", "ram:AttachPolicyToRole", "ram:CreateAppSecret", "ram:DeleteApplication" ], "Resource": "*" } ] }
百炼API密钥
获取具有百炼模型调用权限的DashScope API密钥。如您还没有创建百炼API密钥,请参考获取API Key进行创建和配置。
步骤一:创建并配置钉钉应用
创建钉钉应用
按照钉钉OAuth凭证提供商设置教程创建钉钉应用,并将钉钉配置为Agent Identity的OAuth2凭证提供商。
配置钉钉应用权限
登录钉钉开发者后台。找到创建的钉钉应用,进入应用详情页。
在应用详情页的左侧导航栏,单击权限管理。在权限搜索框中输入
Document.Document.Write,单击返回结果操作列的立即开通。该权限授予钉钉应用以委托方式覆写使用者本人的钉钉文档。
步骤二:本地安装与测试应用
获取并准备示例代码
克隆代码仓库。在本地打开终端,执行以下命令克隆示例代码。
git clone https://github.com/aliyun/agent-identity-dev-kit.git cd agent-identity-dev-kit/agent_identity_python_samples/end-to-end_sample安装依赖。建议创建并激活一个 Python 虚拟环境,然后安装项目所需的依赖。
pip install -r requirements.txt配置环境变量。
export AGENT_IDENTITY_REGION_ID=cn-beijing # 当前Agent Identity仅开放北京地域 export DASHSCOPE_API_KEY=<your-api-key> # DashScope API
准备RAM用户凭证
在本地使用用户及权限要求提到的脚本执行用户配置凭证。
使用阿里云CLI
安装阿里云CLI(如已安装,可跳过)。具体请参考步骤一:安装阿里云CLI。
登录阿里云CLI。具体请参考为阿里云CLI配置OAuth认证。
检查凭证配置。执行命令
aliyun configure list检查凭证配置是否存在且有效。输出类似如下:Profile | Credential | Valid | Region | Language --------- | ------------------ | ------- | ---------------- | -------- OAuthProfile * | OAuth:xQcliVOdYA@CN | Valid | cn-hangzhou | zh
使用Access Key(不推荐)
为脚本执行用户创建访问密钥(Access Key)并配置到本地环境变量中。
export ALIBABA_CLOUD_ACCESS_KEY_ID=<your-access-key-id>
export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<your-access-key-secret>执行准备脚本
在本地项目根目录下运行准备脚本prepare.py来自动创建所需的云资源:
python -m deploy_starter.prepare此脚本执行以下操作:
创建身份提供者
创建阿里云OAuth 2.1入站应用
创建阿里云MCP服务所需的OAuth 2.1 Native应用(在本教程中不会使用)
创建工作负载身份和角色
配置凭证提供者
脚本会输出创建的资源信息到根目录下的.config.json文件中。
如果执行过程中出现异常失败(如网络问题、资源超过quota等)需要清除创建的资源后再重新运行准备脚本,清除创建的资源请运行:
python -m deploy_starter.clear为避免对账号下的RAM资源造成影响,清理逻辑不会删除角色/自定义策略,需要手动删除。
在代码中配置钉钉凭证提供商
在Agent Identity凭证提供商页面,找到您在步骤一中创建的钉钉凭证提供商,复制凭证提供商名称。
在项目下的
deploy_starter/tools/ding_talk_tool.py文件中,找到以下代码:@requires_access_token( credential_provider_name="test-provider-for-dingtalk", scopes=["openid", "corpid"], auth_flow="USER_FEDERATION", on_auth_url= on_auth, # force_authentication=True, callback_url= f"{get_config_with_default('APP_REDIRECT_URI', 'http://localhost:8090')}/callback", inject_param_name="access_token", )将其替换为如下内容,其中
credential_provider_name的值需要更新为您实际的钉钉凭证提供商名称:@requires_access_token( credential_provider_name="your-dingtalk-credential-provider-name", scopes=["openid", "corpid"], auth_flow="USER_FEDERATION", on_auth_url= on_auth, # force_authentication=True, callback_url= f"{get_config_with_default('APP_REDIRECT_URI', 'http://localhost:8090')}/callback", inject_param_name="access_token", custom_parameters={"prompt": "consent"}, )
步骤三:测试与验证
启动Agent代理服务。在根目录下执行以下命令:
python -m deploy_starter.main启动前后端应用。在根目录下执行以下命令:
python -m application.backend.app访问应用并与代理交互:
等待代理及前后端应用启动完毕后,在浏览器中输入应用访问地址
http://localhost:8090。完成阿里云登录及用户授权。之后,您可在应用对话窗口中与模型进行对话,例如输入:“将以下内容写入我的钉钉文档:{钉钉文档链接} {需要写入的内容}”。
说明您需要提前获取钉钉文档的链接,本示例应用无法新建钉钉文档并写入。
单击返回结果中的OAuth授权地址并使用钉钉文档持有者账户完成登录和授权。
完成授权后,如果一切正常,Agent将提示文档已经写入成功。类似如下:

此时检查钉钉文档,会发现文档已成功写入内容。

您也可以将钉钉写入功能与其他MCP服务结合使用。例如,可以结合教程在百炼高代码中使用Agent Identity,将从阿里云MCP获取的数据写入钉钉文档。
注意事项
如您希望再次执行准备脚本prepare.py,请先在项目根目录下执行清理脚本以清理资源:
python -m deploy_starter.clear项目准备脚本
prepare.py下的常量配置信息不可更改,否则会导致应用无法正常工作。如果您希望将前后端应用部署至阿里云(如ECS示例),需要为后端应用所在的环境关联实例RAM角色(如ECS实例角色、函数计算实例角色),并授予
AliyunAgentIdentityDataCompleteAuthAccess系统策略。否则Agent将无法获得OAuth Access Token。