OAuth到Microsoft Dynamics Marketing OData Feed

时间:2014-07-24 06:36:35

标签: c# oauth odata dynamics-crm-online azure-active-directory

我正在尝试连接到Microsoft Dynamics Marketing OData数据服务。 This page列出了仅供现用访问的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类似,但我不知道对clientIdredirectUriresource使用什么。

我尝试了很多不同的组合,并且遇到了错误,例如:

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中将应用程序注册为Native Client App,并将clientIdredirectUriMicrosoft.DynamicsMarketing一起用作资源。我在服务主体列表Get-MsolServicePrincipal中使用"用于Windows PowerShell的Windows Azure Active Directory模块&#34 ;.

这些是正确的参数吗?我只需要对某些方式或某些方法进行排序吗?

更新 正确的resourcehttps://marketing-infra.dynamics.com/,它是我使用的前一个Microsoft.DynamicsMarketing列出的服务主体名称之一。这适用于我从Power Query从Fiddler捕获的clientIdredirectUri。我非常肯定,为了让它与我的clientId一起使用,我需要在Azure应用程序注册中授予Dynamics Marketing权限,并且#34;对其他应用程序的权限#34;。问题是Dynamics Marketing不是可以添加的应用程序,而且Dynamics CRM委托权限不具有Dynamics Marketing的作用。

2 个答案:

答案 0 :(得分:1)

确实可以访问Feed。但您必须在Azure Active Directory中注册应用程序并授权其访问Dynamics Marketing。

请查看我的BlogPost on this topic here - 包含步骤和示例代码: - )

我还在GitHub上发布了PowerShell cmdlet,这样做是一种更通用的方式,并且不为数据模型使用代理类。 PowerShell cmdlets to access to MDM across OData and SDK

答案 1 :(得分:0)

我从Microsoft那里得到了不支持Power Query以外的客户端的答案。因此,我上面的代码是正确的,并且还不支持添加使用其他应用程序访问它的权限。