如何为 Dataverse API 生成访问令牌

Posted

技术标签:

【中文标题】如何为 Dataverse API 生成访问令牌【英文标题】:How to generate access token for Dataverse APIs 【发布时间】:2022-01-18 07:57:00 【问题描述】:

我需要使用 REST API 从 Dataverse 表中获取详细信息,为此我需要生成访问令牌以发送有效的授权标头。我已经完成了Use OAuth authentication with Microsoft Dataverse 和Register an app with Azure Active Directory 并按照步骤操作。现在要生成访问令牌,我使用带有https://login.microsoftonline.com/tenantId/oauth2/v2.0/token 端点的POST 方法,并将grant_type 作为client_credentials,资源作为https://management.core.windows.net/ 以及客户端ID 和客户端密码,内容类型为application/x-www-form-urlencoded。但我收到 AADSTS901002: The 'resource' request parameter is not supported.


编辑

在 API 权限选项卡中,我添加了委派权限。

在身份验证选项卡中,我没有为流选择任何类型,我需要在此处更改吗?

另外请注意,在 Token Configuration 选项卡中尚未添加任何声明或组,并且 Expose API 选项卡没有添加范围和授权的客户端应用程序。如果我需要在此处进行任何更改,请告诉我。


更新

当我不传递资源参数并使用https://orgId.crm5.dyanamics.com/.default 连同client_id、client_secret 和grant_type 一起发送范围时,我能够获取访问令牌,但是当我使用此令牌通过https://orgId.crm5.dyanamics.com/api/data/v9.0/accounts 获取数据时,我我得到用户不是组织的成员

【问题讨论】:

【参考方案1】:

错误AADSTS901002: The 'resource' request parameter is not supported表示请求中提供的资源不正确。

当您尝试为 Dataverse API 生成访问令牌时,资源应该如下:

https://admin.services.crm.dynamics.com/

【讨论】:

谢谢,我必须使用建议的资源值从邮递员那里生成访问令牌,但我收到了相同的消息。我是否需要将请求中的任何其他详细信息作为参数或标头传递? 你添加的范围是什么?您的应用注册是否具有 dataverse api 的 user_impersonation 委托权限? 您好 RamaraoAdapa-MT,以前我没有发送任何范围,但我尝试使用 openid offline_access 并且得到相同的 *AADSTS901002:不支持“资源”请求参数。* 使用资源作为https://admin.services.crm.dynamics.com/ 我还更新了问题,提供了有关配置的更多详细信息,目前,我确实添加了委派权限。如果需要任何更改,请告诉我。谢谢 您需要为 user_impersonation 权限授予管理员同意。同样在身份验证选项卡中,请检查访问令牌和 id 令牌。您无需为此应用注册添加任何范围

以上是关于如何为 Dataverse API 生成访问令牌的主要内容,如果未能解决你的问题,请参考以下文章

如何为上传到 Firebase 存储的文件生成访问令牌?

如何为 Firebase Dynamic Link Analytics Rest API (NodeJS) 获取正确的访问令牌

如何为 Twilio 视频会议创建访问令牌

刷新令牌如何为 jwt 添加安全性?

IdentityServer4:如何为 Google 用户设置角色?

如何为 Azure Blob 存储中的文件夹生成共享访问签名?