다음을 통해 공유


웹 API를 사용하여 다른 사용자를 가장

 

게시 날짜: 2017년 1월

적용 대상: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

다른 사용자를 대신하여 코드가 작업을 수행해야 할 때가 있습니다. 코드를 실행하는 시스템 계정에 필요한 권한이 있는 경우 다른 사용자를 대신하여 작업을 수행할 수 있습니다.

이 항목의 내용

가장에 대한 요구 사항

사용자를 가장하는 방법

실제 사용자를 결정합니다.

가장에 대한 요구 사항

가장은 가장된 사용자의 적절한 역할 및 개체 기반 보안을 사용하여 원하는 기능 또는 서비스를 제공하기 위해 다른 Microsoft Dynamics 365 사용자 대신 비즈니스 논리(코드)를 실행하는 데 사용됩니다. 예를 들어 워크플로 또는 ISV 솔루션에서 Dynamics 365 사용자 대신 다양한 클라이언트 및 서비스에서 Microsoft Dynamics 365 웹 서비스가 호출될 수 있으므로 반드시 필요합니다. 가장은 서로 다른 두 개의 사용자 계정을 포함합니다. 한 사용자 계정(A)은 다른 사용자(B)를 대신하여 작업을 수행하기 위해 코드를 실행하는 데 사용됩니다.

사용자 계정(A)에는 prvActOnBehalfOfAnotherUser 권한이 필요하고 이 권한은 대리인 보안 역할에 포함되어 있습니다. 데이터를 수정하는 데 사용되는 실제 권한 집합은 대리인 역할 사용자가 소유하는 권한과 가장되는 사용자가 소유하는 권한의 교차점입니다. 즉 사용자 (A)와 가장된 사용자(B) 가 작업에 필요한 권한이 있어야만 사용자 (A)가 작업을 수행할 수 있습니다.

사용자를 가장하는 방법

사용자를 가장하려면 웹 서비스에 요청을 보내기 전에 가장한 사용자의 systemuserid와 동일한 GUID 값을 가진 MSCRMCallerID라는 요청 헤더를 추가합니다. 이 예제에서 새로운 계정 엔터티가 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"
        }
    }
    

참고 항목

웹 API를 사용하여 작업 수행
HTTP 요청 및 처리 오류 작성
웹 API를 사용하여 데이터 쿼리
웹 API를 사용하여 엔터티 만들기
웹 API를 사용하여 엔터티 검색
웹 API를 사용하여 엔터티 업데이트 및 삭제
웹 API를 사용하여 엔터티 연결 및 연결 해제
웹 API 기능 사용
웹 API 작업 사용
웹 API를 사용하여 일괄 작업 실행
웹 API를 사용하여 조건부 작업을 수행

Microsoft Dynamics 365

© 2017 Microsoft. All rights reserved. 저작권 정보