共用方式為


使用 Web API 模擬其他使用者

 

發行︰ 2017年1月

適用於: Dynamics 365 (online)、Dynamics 365 (on-premises)、Dynamics CRM 2016、Dynamics CRM Online

有時候您的程式碼需要代表其他使用者執行作業。 如果執行程式碼的系統帳戶具備必要的權限,您可以代表其他使用者執行作業。

本主題內容

模擬的需求

如何模擬使用者

判斷實際使用者

模擬的需求

模擬用於執行商務規則 (程式碼) 以代表其他 Microsoft Dynamics 365 使用者提供預期的功能或使用適當的腳色和物件型的安全性的模擬使用者。 這是必要的,因為 Microsoft Dynamics 365 Web 服務可以用多個用戶端呼叫,且服務代表 Dynamics 365 使用者,舉例來說,在工作流程或自訂 ISV 解決方案中。 模擬包含兩個不同使用者帳戶:使用者帳戶 (A) 用在執行程式碼來代替另外一名使用者 (B) 代表其他使用者 (b) 執行部分工作。

使用者帳戶 (A) 需要權限 prvActOnBehalfOfAnotherUser 權限,包含在代理人資訊安全角色中。 用來修改資料的實際權限集合是代理人使用者所擁有與被模擬使用者的權限交集。 換句話說,如果使用者 (A) 和被模擬的使用者 (B) 擁有動作必要的權限,使用者 (A) 就可以執行特定動作。

如何模擬使用者

若要模擬使用者,在傳送要求至 Web 服務之前,新增名稱為 MSCRMCallerID 且使用 GUID 值等於被模擬使用者的 systemuserid 的要求標頭。 在此範例中,代表 systemuserid 00000000-0000-0000-000000000002 使用者建立新客戶實體。

  • 要求

    POST cc_WebAPI_ServiceURI/accounts HTTP/1.1
    MSCRMCallerID: 00000000-0000-0000-000000000002
    Accept: application/json
    Content-Type: application/json; charset=utf-8
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    
    {"name":"Sample Account created using impersonation"}
    
  • 回覆

    HTTP/1.1 204 No Content
    OData-Version: 4.0
    OData-EntityId: cc_WebAPI_ServiceURI/accounts(00000000-0000-0000-000000000003)
    

判斷實際使用者

使用模擬執行作業 (例如建立實體) 時,查詢記錄包含 createdonbehalfby 單一值導覽屬性,可以找到實際執行作業的使用者。 對應 modifiedonbehalfby 單一值導覽屬性可用於更新實體作業。

  • 要求

    GET cc_WebAPI_ServiceURI/accounts(00000000-0000-0000-000000000003)?$select=name&$expand=createdby($select=fullname),createdonbehalfby($select=fullname),owninguser($select=fullname) HTTP/1.1 
    Accept: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    
  • 回覆

    HTTP/1.1 200 OK
    Content-Type: application/json; odata.metadata=minimal
    ETag: W/"506868"
    
    {
        "@odata.context": "cc_WebAPI_ServiceURI/$metadata#accounts(name,createdby,createdonbehalfby,owninguser,createdby(fullname),createdonbehalfby(fullname),owninguser(fullname))/$entity",
        "@odata.etag": "W/\"506868\"",
        "name": "Sample Account created using impersonation",
        "accountid": "00000000-0000-0000-000000000003",
        "createdby": {
            "@odata.etag": "W/\"506834\"",
            "fullname": "Impersonated User",
            "systemuserid": "00000000-0000-0000-000000000002",
            "ownerid": "00000000-0000-0000-000000000002"
        },
        "createdonbehalfby": {
            "@odata.etag": "W/\"320678\"",
            "fullname": "Actual User",
            "systemuserid": "00000000-0000-0000-000000000001",
            "ownerid": "00000000-0000-0000-000000000001"
        },
        "owninguser": {
            "@odata.etag": "W/\"506834\"",
            "fullname": "Impersonated User",
            "systemuserid": "00000000-0000-0000-000000000002",
            "ownerid": "00000000-0000-0000-000000000002"
        }
    }
    

另請參閱

使用 Web API 執行作業
撰寫 HTTP 要求並處理錯誤
使用 Web API 查詢資料
使用 Web API,建立實體
使用 Web API 擷取實體
使用 Web API 更新和刪除實體
使用 Web API 建立和取消實體的關聯
使用 Web API 功能
使用 Web API 動作
使用 Web API,執行批次作業
使用 Web API 執行條件運算

Microsoft Dynamics 365

© 2017 Microsoft. 著作權所有,並保留一切權利。 著作權