예, 정상적인 동기식 플러그인이 웹 서버에서 실행되므로 IIS App Pool 사용자를 확보해야합니다. 플러그인이 비동기 적으로 실행중인 경우 해당 플러그인이 백 엔드 비동기 서비스에서 실행되므로 다른 서비스 계정을 얻을 수 있습니다.
당신은 플러그인이 실행되고있는 시스템 사용자 계정의 CRM GUID입니다 InitiatingUserId
또는 하나 UserId
을 얻을 수있는 플러그인 실행 컨텍스트 (IPluginExecutionContext), 검사 할 수 - 실행 방법 플러그인에 따라 이것은 제공 할 수 있습니다 등록 된 플러그인을 시작한 사용자의 CRM ID입니다.
Jeff는 이것을 다음과 같이 설명합니다. How to get current user record in CRM plugin?
정보는 PluginExecutionContext에서 사용할 수 있습니다. 코드 은 플러그인이 구현해야하는 Execute 메소드의 코드입니다.
public void Execute(IServiceProvider serviceProvider)
{
IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
Guid userId = context.InitiatingUserId;
}
FYI 컨텍스트도 또는하지 않을뿐만 InitiatingUserId 동일 할 수있는 "사용자 아이디"속성을 갖는다. 플러그인 단계 등록 "사용자 컨텍스트에서 실행"필드의 값이 "호출 사용자"인 경우 은 동일합니다. "사용자의 컨텍스트에서 실행"필드에 사용자를 지정한 경우 UserId 필드에는 사용자가 지정한 사용자의 사용자 ID가 포함되며 InitiatingUserId는 실제 CRM 사용자가되어 해당 플러그인을 트리거합니다. InitiatingUserId를 찾는 것 같습니다.
아니면 누군가 마지막으로 일부 레코드를 수정 한 사람과 같은 다른 표시기를 사용할 수도 있습니다. 그런 다음 CRM에서 세부 정보를 조회 할 수 있습니다 (예 : 도메인 이름을 얻으려면.
외부 서비스 인증 방법에 따라 사용자를 가장하는 데 도움이 될 수 있습니다. 그렇지 않으면 내가 아는 한 사용자의 보안 토큰을 쉽게 얻을 수있는 방법이 없다는 것을 압니다. CRM은 실제로 그 정보를 노출하지 않습니다.