具有客户端断言证书(Azure AD)的Dynamics CRM守护程序应用程序提供401

时间:2016-10-12 04:08:54

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

我正在开发一个应用程序,我需要继续与后台作业中的某些Dynamics CRM API交谈(每隔几分钟就可以上传更新的内容)。

由于使用用户凭据(应用程序权限)的ADAL身份验证可以完美地使用CRM API,因此我觉得我也会使用客户端断言证书凭据。

代码看起来像这样 -

var certCred = new ClientAssertionCertificate(clientId, cert);
var result = await authContext.AcquireTokenAsync("https://<tenant_name>.crm4.dynamics.com/", certCred);

这有效,我可以获得访问令牌。但是,由于这些是委派权限,因此我无法获得授权访问CRM WebAPI。

我显然可以使用服务/守护程序帐户来执行后台任务,但我想在客户端断言证书方式中做更多。有没有人找到像这样的场景的解决方案? CRM WebAPI是否支持委派权限?

还有其他办法吗?

1 个答案:

答案 0 :(得分:1)

我想首先澄清一些概念。客户端凭据流用于获取应用程序权限,而不是应用程序的委派权限。通常,OAuth 2.0代码授权流程用于获取委托权限。

从描述中,您似乎希望通过客户端凭据流获取应用程序权限,但是令牌无效以调用Dynamics CRM Web API。在研究之后,我发现这个问题已经多次提出,但是没有答案。

根据我的理解,Dynamics CRM Web API似乎不支持app-token(使用客户端凭据流获取),因为当您在Azure上注册此API的应用程序时,我们无法检查任何权限/应用程序级别的范围如下图所示: enter image description here