Dynamics crm 365获取azure adal授权码

时间:2017-07-04 04:29:27

标签: azure dynamics-crm azure-active-directory dynamics-crm-2013

我有一个场景是用户已登录CRM并触发一些调用第三方API以检索不在CRM中的数据的功能。 此API是与CRM所在的Same Azure Active Directory中的已注册应用程序。 CRM单点登录已启用。

我试图找到一个C#代码示例,它通过CRM插件检索授权代码。到目前为止,我已设法使用客户端密钥检索令牌,如本文所述:

Retrieving token without the ADAL client library

我已经使用本文中定义的参数实现了一个基本调用:

Requesting an Authorization code

但我需要通过用户会话才能使其正常工作。它目前抛出错误

  

已发送静默登录请求但未登录任何用户。用于表示用户会话的Cookie未在请求中发送到Azure AD。如果用户使用的是Internet Explorer或Edge,并且发送静默登录请求的Web应用程序位于与Azure AD端点(login.microsoftonline.com)不同的IE安全区域中,则会发生这种情况。

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:2)

AFAIK,由于需要用户进行交互,因此不适合使用Microsoft Dynamics 365插件中的Oauth代码授予流与Azure AD进行交互。并且无法使用ADAL库发送Microsoft Dynamics 365插件中的会话进行身份验证。

如果您只想访问CRM插件中的Microsoft Dynamics 365组织服务,则无需再使用ADAL库进行身份验证。

只需要插件代码通过ServiceProvider.GetService方法创建服务实例。

// Obtain the organization service reference.
IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);

有关Microsoft Dynamics 365插件开发上下文的更多详细信息,请参阅以下链接:

Understand the data context passed to a plug-in