我有一个场景是用户已登录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安全区域中,则会发生这种情况。
任何帮助表示感谢。
答案 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插件开发上下文的更多详细信息,请参阅以下链接: