Representar outro usuário usando API da Web

 

Publicado: janeiro de 2017

Aplicável a: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Existem situações em que o código precisará executar operações em nome de outro usuário. Se a conta do sistema que executa o código tiver os privilégios necessários, você poderá executar operações em nome de outros usuários.

Neste tópico

Requisitos de representação

Como personificar um usuário

Determine o usuário real

Requisitos de representação

A representação é usada para executar a lógica de negócios (código) em nome de outro usuário do Microsoft Dynamics 365 para fornecer um recurso ou serviço desejado e usar o direito adequado e a segurança baseada em objeto dessa pessoa. Isso é necessário porque os serviços Web do Microsoft Dynamics 365 podem ser chamados por vários clientes e serviços em nome de um usuário do Dynamics 365, por exemplo, em um fluxo de trabalho ou solução ISV personalizada. A representação envolve duas contas de usuário diferentes: uma conta de usuário (A) é usada para executar o código para realizar uma tarefa em nome de outro usuário (B).

A conta do usuário (A) precisa do privilégio prvActOnBehalfOfAnotherUser, que está incluído no direito de acesso do Delegado. O conjunto de privilégios real que é usado para modificar dados é a interseção de privilégios que a função de usuário Delegado possui com esse usuário que está sendo representado. Em outras palavras, o usuário (A) pode fazer algo se e apenas se o usuário (A) e o usuário representado (B) tiver o privilégio necessário para a ação.

Como personificar um usuário

Para representar um usuário, adicione um título da solicitação chamado MSCRMCallerID com um valor de GUID igual ao usuário representado systemuserid antes de enviar a solicitação para o serviço Web. Neste exemplo, uma nova entidade de conta é criada em nome do usuário com systemuserid 00000000-0000-0000-000000000002.

  • Solicitação

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

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

Determine o usuário real

Quando uma operação como a criação de uma entidade é executada usando a representação, o usuário que executou realmente a operação pode ser encontrado consultando o registro que inclui a propriedade única avaliada de navegação de createdonbehalfby. Uma propriedade única avaliada de navegação modifiedonbehalfby correspondente está disponível para operações que atualizam a entidade.

  • Solicitação

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

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

Confira Também

Executar operações usando A API
Compor solicitações de HTTP e lidar com erros
Consultar dados usando a API da Web
Criar uma entidade usando a API da Web
Recuperar uma entidade usando a API Web
Atualizar e excluir entidades que usam a API Web
Associar e desassociar entidades usando a API Web
Usar funções da API Web
Use ações API da Web
Executar operações em lote usando a API da WEB
Executar operações condicionais usando A API

Microsoft Dynamics 365

© 2017 Microsoft. Todos os direitos reservados. Direitos autorais