全部產品
Search
文件中心

智能體身分(Agent Identity):在Agent中安全訪問DingTalk

更新時間:Jun 26, 2026

本教程為您示範如何使用Agent Identity的能力,讓您的Agent調用DingTalk開放平台並將資料安全地寫入DingTalk文檔。

架構

diagram_agentidentity_dingtalk

準備工作

環境要求

本地測試環境需要安裝Python(版本≥ 3.10)以及pip包管理器

使用者及許可權要求

  1. 使用者要求:

    1. DingTalk開放平台管理員:用於管理DingTalk開放平台的應用

    2. 指令碼執行使用者(RAM使用者):用於執行準備指令碼及本地應用測試。

  2. 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進行建立和配置。

步驟一:建立並配置DingTalk應用

建立DingTalk應用

按照DingTalkOAuth憑證供應商設定教程建立DingTalk應用,並將DingTalk配置為Agent Identity的OAuth2憑證供應商。

配置DingTalk應用許可權

  1. 登入DingTalk開發人員後台。找到建立的DingTalk應用,進入應用詳情頁。

  2. 在應用詳情頁的左側導覽列,單擊許可權管理。在許可權搜尋方塊中輸入Document.Document.Write,單擊返回結果操作列的立即開通。該許可權授予DingTalk應用以委託方式覆寫使用者本人的DingTalk文檔。

步驟二:本地安裝與測試應用

擷取並準備範例程式碼

  1. 複製代碼倉庫。在本地開啟終端,執行以下命令複製範例程式碼。

    git clone https://github.com/aliyun/agent-identity-dev-kit.git
    cd agent-identity-dev-kit/agent_identity_python_samples/end-to-end_sample
  2. 安裝依賴。建議建立並啟用一個 Python 虛擬環境,然後安裝專案所需的依賴。

    pip install -r requirements.txt
  3. 配置環境變數

    export AGENT_IDENTITY_REGION_ID=cn-beijing # 當前Agent Identity僅開放北京地區
    export DASHSCOPE_API_KEY=<your-api-key> # DashScope API

準備RAM使用者憑證

在本地使用使用者及許可權要求提到的指令碼執行使用者配置憑證。

使用阿里雲CLI

  1. 安裝阿里雲CLI(如已安裝,可跳過)。具體請參考快速使用 CLI

  2. 登入阿里雲CLI。具體請參考為阿里雲CLI配置OAuth認證

  3. 檢查憑證配置。執行命令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 prepare

此指令碼執行以下操作:

  1. 建立身份提供者

  2. 建立阿里雲OAuth 2.1入站應用

  3. 建立阿里雲MCP服務所需的OAuth 2.1 Native應用(在本教程中不會使用)

  4. 建立工作負載身份和角色

  5. 配置憑證提供者

指令碼會輸出建立的資源資訊到根目錄下的.config.json檔案中。

如果執行過程中出現異常失敗(如網路問題、資源超過quota等)需要清除建立的資源後再重新運行準備指令碼,清除建立的資源請運行:

python -m clear
說明

為避免對帳號下的RAM資源造成影響,清理邏輯不會刪除角色/自訂策略,需要手動刪除。

在代碼中配置DingTalk憑證供應商

  1. Agent Identity憑證供應商頁面,找到您在步驟一中建立的DingTalk憑證供應商,複製憑證供應商名稱

  2. 在專案下的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的值需要更新為您實際的DingTalk憑證供應商名稱:

    @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"},
    )

步驟三:測試與驗證

  1. 啟動Agent代理服務。在根目錄下執行以下命令:

    python -m deploy_starter.main
  2. 啟動前後端應用。在根目錄下執行以下命令:

    python -m application.backend.app
  3. 訪問應用並與代理互動

    1. 等待代理及前後端應用啟動完畢後,在瀏覽器中輸入應用訪問地址http://localhost:8090

    2. 完成阿里雲登入及使用者授權。之後,您可在應用交談視窗中與模型進行對話,例如輸入:“將以下內容寫入我的DingTalk文檔:{DingTalk文檔連結} {需要寫入的內容}”。

      發送指令後,Agent 回複將使用DingTalk工具完成操作,並顯示授權提示:"請點選連結授權使用 寫入DingTalk文檔",附帶 OAuth2 授權連結(agentidentitydata.cn-beijing.aliyuncs.com/oauth2/authorize?request_uri=urn:ietf:params:oauth:request_uri:xxx),使用者需點擊該連結完成DingTalk文檔寫入授權。

      說明

      您需要提前擷取DingTalk文檔的連結,本樣本應用無法建立DingTalk文檔並寫入。

    3. 單擊返回結果中的OAuth授權地址並使用DingTalk文檔持有人賬戶完成登入和授權。

    4. 完成授權後,如果一切正常,Agent將提示文檔已經寫入成功。

    5. 此時檢查DingTalk文檔,會發現文檔已成功寫入內容。

說明

您也可以將DingTalk寫入功能與其他MCP服務結合使用。例如,可以結合教程在百鍊高代碼中使用Agent Identity,將從阿里雲MCP擷取的資料寫入DingTalk文檔。

注意事項

  • 如您希望再次執行準備指令碼prepare.py,請先在專案根目錄下執行清理指令碼以清理資源:

    python -m clear
  • 專案準備指令碼prepare.py下的常量配置資訊不可更改,否則會導致應用無法正常工作。

  • 如果您希望將前後端應用部署至阿里雲(如ECS樣本),需要為後端應用所在的環境關聯執行個體RAM角色(如ECS執行個體角色、Function Compute執行個體角色),並授予AliyunAgentIdentityDataCompleteAuthAccess系統策略。否則Agent將無法獲得OAuth Access Token。