首页 文章

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

提问于
浏览
0

我正在开发一个应用程序,我需要继续与后台作业中的某些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 回答

  • 1

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

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

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

相关问题