gpt4 book ai didi

azure - 如何使用 Postman 向 Dataverse API 发出正确的 OAuth 请求?

转载 作者:行者123 更新时间:2023-12-03 06:26:12 26 4
gpt4 key购买 nike

我想向 Microsoft Dataverse API 发出 OAth 请求以获取 Bearer token ,并且我希望使用此 token 向 PowerAutomate 发出经过身份验证的请求。我使用 Postman 来发出请求。我可以通过两种不同的方式获取承载 token ,但在请求中使用这些方式后会得到相同的结果:401 Unauthorized

我的设置:

通用授权网址: enter image description here

带有 TenantID 的身份验证 URL: enter image description here

如您所见,我获得了两者的不记名 token ,但是当我尝试调用最简单的 /WhoAmI 端点时,我收到了 401 Unathorized 错误。

我已在 Azure 应用程序中正确设置了 API 权限: enter image description here

我的应用程序用户拥有正确的应用程序 ID: enter image description here

我的第一个问题:我错过了什么?我还应该设置什么?

我的第二个问题:我使用的两个身份验证端点有什么区别?

欢迎任何建议。

最佳答案

我尝试在我的环境中重现相同的结果并得到以下结果:

我注册了一个 Multi-Tenancy Azure AD 应用程序并添加了 API 权限,如下所示:

enter image description here

现在,我使用与您通过 Postman 相同的客户端凭据流程生成访问 token ,如下所示:

POST https://login.microsoftonline.com/<tenantID>/oauth2/v2.0/token
client_id: <appID>
grant_type:client_credentials
scope: https://org25xxxxxx.crm.dynamics.com/.default
client_secret: <secret>

回应:

enter image description here

当我使用上述 token 调用 /WhoAmI 端点时,我也遇到了 401 Unauthorized 错误,如下所示:

GET https://org25bexxxxx.crm.dynamics.com/api/data/v9.0/WhoamI

回应:

enter image description here

当我使用通过 common 身份验证 URL 生成的访问 token 时,我也遇到了相同的错误

To resolve the error, try using implicit flow to generateaccess token.

在生成 token 之前,请确保在应用的 Manifest 文件中启用“oauth2AllowImplicitFlow”属性,如下所示:

enter image description here

现在,使用以下参数在 Postman 中创建新的环境:

url: <your Dynamics 365 URL>
clientid: <appID of Azure AD application>
version: 9.0
webapiurl: {{url}}/api/data/v{{version}}/
callback: <redirect URL of Azure AD app>
authurl: https://login.microsoftonline.com/common/oauth2/authorize?resource={{url}}

enter image description here

要生成访问 token ,请打开新选项卡并在“授权”选项卡中选择 OAuth 2.0,输入如下详细信息:

enter image description here

选择获取新访问 token 选项后,我使用管理员凭据登录并成功获取访问 token ,如下所示:

enter image description here

我选择了使用 token 选项并调用了/WhoAmI端点,我成功地获得了结果,如下所示:

GET {{webapiurl}}WhoAmI

回应:

enter image description here

What is the difference between the two auth endpoint I am using?

通用身份验证 URL: https://login.microsoftonline.com/common/oauth2/token是一个通用端点,用于获取任何 Azure AD 租户的 token 。如果您的应用程序是 Multi-Tenancy 的,那么您的 token 端点将如下所示:

enter image description here

带有 TenantID 的身份验证 URL: https://login.microsoftonline.com/{tenant_id}/oauth2/token用于获取特定租户 ID 的 token 。如果您的应用程序是单租户,那么您的 token 端点将带有tenantID,如下所示:

enter image description here

引用: Postman tool to test Dynamics 365 online Web API by Rajeev Pentyala

关于azure - 如何使用 Postman 向 Dataverse API 发出正确的 OAuth 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75559356/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com