【发布时间】:2020-05-29 17:27:30
【问题描述】:
我正在尝试重写当前使用 JavaScript 连接到 Dynamics 365 的客户端应用
let URL = "https://<company-name>.operations.dynamics.com/data/FinancialDimensionValues?cross-company=true";
let body = '';
var headers = {'Content-Type':'application/json'};
let response = ai.https.authorizedRequest(URL, 'GET', body, headers);
目前,此 JavaScript 应用程序可以正常工作并返回 JSON 数据。我正在尝试使用 C# 重写此应用程序。我首先从 Postman 开始,以确保在继续编写 C# 代码之前我已完成所有身份验证步骤。
使用 Postman,我可以使用“客户端凭据”流程成功获取 JWT 令牌,在该流程中,我将客户端 ID 和客户端密码传递给访问令牌请求 URL。但是,当尝试访问 Dynamics 365 中的 API 端点时,即使我正确传递了 JWT 访问令牌,我也会收到 HTTP 401。
这是访问令牌请求 URL:
https://login.microsoftonline.com/722b0db7-9629-4304-92a0-dfb4a1debe62/oauth2/token?resource=https://<company-domain-here>.dynamics.com
我认为我必须正确地进行身份验证,否则我将无法取回有效的访问令牌。此外,由于 JavaScript 应用程序已经到位,因此我假设 Dynamics 365 已正确配置以允许 API 访问。
我想弄清楚我在 Postman 中可能做错了什么导致我收到 401?有效的 JavaScript 请求与我通过 Postman 发送的请求有何不同?
【问题讨论】:
-
您能否确保将 Bearer 令牌作为请求标头项传递?
-
@ArunVinoth 是的。以
AuthorizationBearer <token here>的形式传入 heder -
获取token的时候,Rour资源访问url好像不一样。
https://<company-domain-here>.dynamics.com与您的请求中的https://<company-name>.operations.dynamics.com/ -
@NickGoloborodko 是的,我明白你在说什么,但这是个问题吗?令牌请求 URL 可以与资源 URL 不同。
-
@webworm URL 包含在令牌中,除非有特定的匹配项,否则我猜它可能会破坏动态中的身份验证机制。只是觉得可能值得一试。
标签: api dynamics-crm postman dynamics-365