我XrmServiceContext
为我的 CRM 2013 数据库创建了一个 using svcutil.exe,效果很好,我可以在我的 MVC4 应用程序中从 CRM 检索数据。
我的网站正在使用 ADFS2 运行 SSO,我可以使用以下方法检索访问用户的身份:
Microsoft.IdentityModel.Claims.IClaimsIdentity ci = Thread.CurrentPrincipal.Identity as Microsoft.IdentityModel.Claims.IClaimsIdentity;
var accountNameClaim = ci.Claims.Where(x => x.ClaimType.ToLower().EndsWith("windowsaccountname")).FirstOrDefault();
这给了我一些类似的东西
string accountNameClaim = "firstname.lastname@domain.com"
使用它我可以检索用户表单 CRM 2013XrmServiceContext
var user = _serviceContext.SystemUserSet
.Where( x=> x.DomainName == accountNameClaim)
.Select(s => new UserInformationProxy()
{
Id = s.Id, // this is probably needed for impersonation
FullName = s.FullName,
DomainName = s.DomainName
})
.FirstOrDefault();
现在我想知道如何使用我的 XRMServiceContext 为我对 CRM 的所有后续查询充当/模拟该用户。
此页面http://msdn.microsoft.com/en-us/library/gg309629.aspx有一个指南,建议我需要设置一个名为的变量CallerID
,OrganizationServiceContext
我猜该变量包含在我的XRMServiceContext
.. 但我找不到它。