OAuth to Microsoft Dynamics Marketing OData Feed



我正在尝试连接到Microsoft Dynamics Marketing OData数据服务。该页列出了用于只读访问的OData提要,但没有关于如何对其进行身份验证的任何信息。

我一直在尝试使用Microsoft.IdentityModel.Clients.ActiveDirectory -Version 1.0.4获取访问令牌,像这样:

var authenticationContext = new AuthenticationContext("https://login.windows.net/" + domainName);
var authenticationResult = authenticationContext.AcquireToken(resource, clientId, redirectUri);
var token = authenticationResult.AccessToken;

domainNamecontoso.onmicrosoft.com很像,但我不知道clientId, redirectUri, resource用什么。

我尝试了许多不同的组合,并出现了错误,例如:

invalid_request: AADSTS90027: The client 'xxxxxxxx-9068-486b-bdd2-dac26b8a5a7a' and resource 'Microsoft.DynamicsMarketing' identify the same application.

access_denied: AADSTS65005: The client application has requested access to resource 'Microsoft.DynamicsMarketing'. This request has failed because the client has not specified this resource in its requiredResourceAccess list.

我想我已经接近这个了。我在Azure AD中注册了一个应用程序作为本地客户端应用程序,并使用其clientIdredirectUriMicrosoft.DynamicsMarketing作为资源。我从服务主体列表中发现了这一点,Get-MsolServicePrincipal使用"Windows Azure活动目录模块用于Windows PowerShell"。

这些参数是正确的吗?我只需要在某种程度上整理许可,还是我走远了?

正确的resourcehttps://marketing-infra.dynamics.com/,它是列出的服务主体名称之一,就像之前我使用的Microsoft.DynamicsMarketing一样。这适用于我从Fiddler从Power Query捕获的clientIdredirectUri。我很确定,要让它与我的客户端一起工作,我需要在Azure应用程序注册中赋予Dynamics Marketing权限,"其他应用程序的权限"。问题是Dynamics Marketing不是一个可以添加的应用程序,并且Dynamics CRM委托权限没有Dynamics Marketing的角色。

确实可以访问提要。但是你必须在Azure Active Directory中注册一个应用程序,并授权它访问Dynamics Marketing。

请查看我关于这个主题的博文-包括步骤和示例代码:-)

我还在GitHub上发布了PowerShell cmdlet,这样做是一种更通用的方式,不使用数据模型的代理类。PowerShell cmdlet可以跨OData和SDK访问MDM

我得到了微软的回答,除了Power Query之外的客户端不支持。因此,我上面的代码是正确的,并且还不支持添加与其他应用程序一起访问它的权限。

相关内容

  • 没有找到相关文章

最新更新