Condividi tramite


Rappresentare un altro utente usando l'API Web

 

Data di pubblicazione: gennaio 2017

Si applica a: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Vi sono situazioni in cui il codice deve eseguire operazioni per conto di un altro utente. Se l'account di sistema che esegue il codice dispone dei privilegi necessari, puoi eseguire operazioni per conto di altri utenti.

In questo argomento

Requisiti per la rappresentazione

Come rappresentare un utente

Determinare l'utente effettivo

Requisiti per la rappresentazione

La rappresentazione viene utilizzata per eseguire le regole business (codice) per conto di un altro utente di Microsoft Dynamics 365 al fine di offrire una funzionalità o servizio desiderato utilizzando il ruolo appropriato e la sicurezza basata sugli oggetti dell'utente rappresentato. È necessaria perché i servizi Web di Microsoft Dynamics 365 possono essere chiamati da vari client e servizi per conto di un utente di Dynamics 365, ad esempio, in un flusso di lavoro o in una soluzione ISV personalizzata. La rappresentazione interessa due account utenti diversi: un account utente (A) che viene utilizzato quando si esegue il codice per eseguire alcune attività per conto di un altro utente (B).

L'account utente (A) deve disporre del privilegio prvActOnBehalfOfAnotherUser, incluso nel ruolo di sicurezza Delegato. Il set effettivo di privilegi che viene utilizzato per modificare i dati è una combinazione dei privilegi dell'utente posseduti dal ruolo utente Delegato con quelli dell'utente che rappresenta. In altre parole, all'utente (A) è consentito eseguire un'azione se e solo se l'utente (A) e l'utente rappresentato (B) possiedono il privilegio necessario per l'azione.

Come rappresentare un utente

Per rappresentare un utente, aggiungi un'intestazione di richiesta denominata MSCRMCallerID con un valore GUID uguale all'systemuserid dell'utente rappresentato prima di inviare la richiesta al servizio Web. In questo esempio una nuova entità account viene creata per conto dell'utente con systemuserid 00000000-0000-0000-000000000002.

  • Richiesta

    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"}
    
  • Risposta

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

Determinare l'utente effettivo

Quando un'operazione, ad esempio la creazione di un'entità, viene eseguita usando la rappresentazione, l'utente che ha eseguito l'operazione può essere trovato eseguendo una query sul record che include la proprietà di navigazione a valore singolo createdonbehalfby. Una proprietà di navigazione a valore singolo modifiedonbehalfby corrispondente è disponibile per le operazioni che aggiornano l'entità.

  • Richiesta

    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
    
  • Risposta

    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"
        }
    }
    

Vedere anche

Eseguire operazioni tramite l'API Web
Comporre richieste HTTP e gestire gli errori
Query di dati tramite l'API Web
Creare un'entità utilizzando l'API Web
Recupera un'entità utilizzando l'API Web
Aggiorna ed elimina le entità con l'API Web
Associa e annulla associazione entità con l'API Web
Utilizzare le funzioni API Web
Utilizzare le azioni API Web
Eseguire operazioni in batch usando l'API Web
Eseguire operazioni condizionali tramite l'API Web

Microsoft Dynamics 365

© 2017 Microsoft. Tutti i diritti sono riservati. Copyright