我在一个应用程序上工作,我需要在后台作业中保持与Dynamics CRM app的一些对话(每隔几分钟上传更新的内容)。
由于使用用户凭据(应用程序权限)的ADAL身份验证与CRM app完美配合使用,因此我的印象是,我也会将其与客户端断言证书凭据一起使用。
代码看起来像这样-
var certCred = new ClientAssertionCertificate(clientId, cert);
var result = await authContext.AcquireTokenAsync("https://<tenant_name>.crm4.dynamics.com/", certCred);
这是可行的,并且我能够获得访问令牌。但是,由于这些是委派权限,因此我无法执行获取授权以访问CRM WebAPI。
显然,我可以使用服务/守护程序帐户来执行后台任务,但我想更多地使用客户端断言证书的方式。有没有人找到了这种情况的解决方案?CRM WebAPI是否支持委派权限?
还有没有别的办法呢?
发布于 2016-10-12 08:36:13
我想先澄清一些概念。客户端凭据流用于获取应用程序权限,而不是应用程序的委托权限。通常使用OAuth 2.0代码授权流来获取委托权限。
从描述中可以看出,您似乎希望通过客户端凭据流获得应用程序权限,但是令牌对于调用Dynamics CRM Web API是无效的。经过研究,我发现这个问题被多次提出,但没有答案。
根据我的理解,Dynamics CRM Web API似乎不支持app-token(使用客户端凭据流获取),因为当您在Azure上注册此API的应用程序时,我们无法检查应用程序级别的任何权限/范围,如下图所示:
https://stackoverflow.com/questions/39990362
复制相似问题