Delen via


Zich als een andere gebruiker voordoen die de Web API gebruikt

 

Gepubliceerd: januari 2017

Is van toepassing op: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Er zijn momenten waarop uw code bewerkingen moet uitvoeren uit naam van een andere gebruiker. Als het systeemaccount dat uw code uitvoert de noodzakelijke bevoegdheden heeft, kunt u bewerkingen namens andere gebruikers uitvoeren.

In dit onderwerp

Vereisten voor imitatie van andere gebruikers

Een gebruiker imiteren

Bepaal de huidige gebruiker

Vereisten voor imitatie van andere gebruikers

Imitatie wordt gebruikt om bedrijfslogica (code) namens een andere Microsoft Dynamics 365-gebruiker te voeren om een gewenste functie of service te leveren met de juiste rol en op de object-gebaseerde beveiliging van die geïmiteerde gebruiker. Dit is noodzakelijk omdat de Microsoft Dynamics 365-webservices door verschillende clients en services worden aangeroepen uit naam van een Dynamics 365-gebruiker, bijvoorbeeld in een werkstroom of aangepaste ISV-oplossing. Imitatie omvat twee verschillende gebruikersaccounts: een gebruikersaccount (A) wordt gebruikt bij het uitvoeren van code om een taak uit naam van een andere gebruiker (B) uit te voeren.

Gebruikersaccount (A) heeft de bevoegdheid prvActOnBehalfOfAnotherUser nodig, die in de beveiligingsrol Gemachtigde is opgenomen. De werkelijke reeks machtigingen die wordt gebruikt om gegevens te wijzigen is de kruising van de bevoegdheden die de gebruiker in de Gemachtigde-rol heeft met die van de gebruiker die wordt geïmiteerd. Met andere woorden, gebruiker (A) mag alleen iets doen als gebruiker (A) en de geïmiteerde gebruiker (B) de benodigde bevoegdheid voor de acties hebben.

Een gebruiker imiteren

Om een gebruiker te imiteren, voegt u een aanvraagkoptekst toe met de naam MSCRMCallerID met een GUID-waarde die gelijk is aan de systemuserid van de geïmiteerde gebruiker voordat u de aanvraag naar de webservice verzendt. In dit voorbeeld wordt een nieuwe accountentiteit gemaakt uit naam van de gebruiker met systemuserid 00000000-0000-0000-000000000002.

  • Aanvraag

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

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

Bepaal de huidige gebruiker

Wanneer een bewerking zoals het maken van een entiteit via gebruikersimitatie wordt uitgevoerd, kan de gebruiker die de bewerking echt heeft uitgevoerd worden gevonden door de record te zoeken met de single-valued navigatie-eigenschap createdonbehalfby. Een overeenkomende single-valued navigatie-eigenschap modifiedonbehalfby is beschikbaar voor bewerkingen waarmee de entiteit wordt bijgewerkt.

  • Aanvraag

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

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

Zie ook

Bewerkingen uitvoeren met de web-API
HTTP-aanvragen opstellen en fouten afhandelen
Querygegevens met behulp van de web-API
Een entiteit maken met de web-API
Een entiteit ophalen met de web-API
Entiteiten bijwerken en verwijderen met de Web-API
Entiteiten koppelen en ontkoppelen met de web-API
Web-API-functies gebruiken
Web-API-acties gebruiken
Batchbewerkingen uitvoeren met de Web API
Voorwaardelijke bewerkingen uitvoer met de web-API

Microsoft Dynamics 365

© 2017 Microsoft. Alle rechten voorbehouden. Auteursrecht