我有一个.NET MVC应用程序,它将与CRM 2016 Online一起使用。我将Azure AD身份验证添加到项目中,并且工作正常,以便用户可以使用他们用于CRM的相同帐户登录。如果已经记录,则没有登录屏幕。
问题是我想使用这些凭据通过组织服务或Web Api从CRM获取数据。
如何使用我已有的登录信息并将其传递给服务?这个地方有代码样本吗?
似乎ADAL将是最佳选择。我在这里试过这段代码 https://msdn.microsoft.com/en-us/library/gg327838.aspx
// Authenticate the registered application with Azure Active Directory.
AuthenticationContext authContext =
new AuthenticationContext("https://login.windows.net/common", false);
AuthenticationResult result = authContext.AcquireToken(resource, clientId, new
Uri(redirectUrl));
没有AuthenticationContext。我添加了ADAL NuGet包以获得此功能。但是失败了! AuthenticationContext中没有AcquireToken方法。有一个叫做AcquireTokenASync,它有完全不同的参数。所以我也被困在这里了!
如果这样可行,是否可以使用我已经完成的Azure AD登录,还是会弹出新的登录屏幕?
答案 0 :(得分:0)
这可能不适合你的情况,但你可以。
systemuser
匹配的电子邮件地址或域名的CRM。您需要找到系统用户记录Id。IOrganizationService
,但传递您在CRM中找到的用户记录ID。// Retrieve the system user ID of the user to impersonate.
OrganizationServiceContext orgContext = new OrganizationServiceContext(_serviceProxy);
_userId = (from user in orgContext.CreateQuery<SystemUser>()
where user.FullName == "Kevin Cook"
select user.SystemUserId.Value).FirstOrDefault();
// To impersonate another user, set the OrganizationServiceProxy.CallerId
// property to the ID of the other user.
_serviceProxy.CallerId = _userId;
Impersonate another user using the Web API
POST [Organization URI]/api/data/v8.1/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"}