我想知道在CRM 2011中,如果我使用用户(A)启动组织服务,然后我冒充用户(B)。
当我尝试执行请求(即创建帐户,...)时,CRM将使用哪些用户权限?
例如:
我有
我根据Windows身份验证创建组织服务,并使用用户(A)登录,如下所示:
Uri organizationUri = new Uri("http://localhost:5555/RMS/XRMServices/2011/Organization.svc");
Uri homeRealmUri = null;
ClientCredentials credentials = new ClientCredentials();
credentials.Windows.ClientCredential = System.Net.CredentialCache.DefaultNetworkCredentials;
OrganizationServiceProxy orgProxy = new OrganizationServiceProxy(organizationUri, homeRealmUri, credentials, null);
然后我像那样冒充
orgProxy.CallerId = userBGuid;
当我尝试执行WhoAmIRequest时;我收到以下错误:
System.ServiceModel.FaultException`1 [Microsoft.Xrm.Sdk.OrganizationServiceFault]:用户无权代表其他用户行事。 (故障详细信息等于Microsoft.Xrm.Sdk.OrganizationServiceFault)。
当我授予用户(A)代表其他用户行事的权限时,此代码会成功通过。
答案 0 :(得分:0)
它看起来是预期的行为。如果设置CallerId = userBGuid
,则表示即使您以userA身份登录,也代表userB完成所有活动。 UserA应该有权利这样做。