CRM 2013 データベース用に svcutil.exe を使用して作成しましたXrmServiceContext
。これはうまく機能しており、MVC4 アプリケーションで CRM からデータを取得できます。
私の Web サイトは ADFS2 を使用して SSO を実行しており、次を使用してアクセスしているユーザー ID を取得できます。
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 2013 を取得できますXrmServiceContext
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