我正在尝试连接到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;
domainName
与contoso.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中将应用程序注册为Native Client App,并将clientId
和redirectUri
与Microsoft.DynamicsMarketing
一起用作资源。我在服务主体列表Get-MsolServicePrincipal
中使用"用于Windows PowerShell的Windows Azure Active Directory模块&#34 ;.
这些是正确的参数吗?我只需要对某些方式或某些方法进行排序吗?
更新
正确的resource
是https://marketing-infra.dynamics.com/
,它是我使用的前一个Microsoft.DynamicsMarketing
列出的服务主体名称之一。这适用于我从Power Query从Fiddler捕获的clientId
和redirectUri
。我非常肯定,为了让它与我的clientId一起使用,我需要在Azure应用程序注册中授予Dynamics Marketing权限,并且#34;对其他应用程序的权限#34;。问题是Dynamics Marketing不是可以添加的应用程序,而且Dynamics CRM委托权限不具有Dynamics Marketing的作用。
答案 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以外的客户端的答案。因此,我上面的代码是正确的,并且还不支持添加使用其他应用程序访问它的权限。