azure-active-directory - Dynamics Business 365 Central API 和 Postman
问题描述
我确实很欣赏这样一个事实,即在我之前有很多人问过这类问题(也许是微软的原因?),但我无法通过阅读这些问题找到解决问题的方法.
我正在尝试从 Postman (AAD auth) 调用 Dynamics 365 BC API (v.2.0),并且我已尝试尽可能地遵循描述,尽管它们在某些地方似乎不同步。 https://docs.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-develop-connect-apps
我要授权和接收令牌的部分工作正常,尽管需要一些时间才能让它正确,而且我必须使用 Fiddler 才能真正看到错误消息。但我让它工作了,所以邮递员现在可以检索一个令牌并将其存储起来以备后用。
不起作用的部分是对 Dynamics BC API 的实际调用。当我尝试使用检索到的令牌调用 Dynamics BC API 时,我不断收到401“未经授权”、“提供的凭据不正确” 、错误。
我不知道为什么会这样。也许应用程序配置错误或者 URL 不正确,我真的不明白。
我正在尝试调用“https://api.businesscentral.dynamics.com/v2.0/production/api/v2.0”,我认为它应该给我一个可用的 API 列表,但如上所述, 401。
当我已经从 Azure 成功检索令牌时,这可能是什么原因?
更新 1
我正在探索 jwt 令牌并对这部分感到好奇,因为它可能是错误的,除非我误解了描述。它说如果令牌是由 v2.0 端点发出的,那么令牌的“iss”部分应该以“/v2.0”结尾,而这里似乎不是这种情况(见图)。
我使用的邮递员身份验证 URL 是:https ://login.microsoftonline.com/98...73/oauth2/v2.0/authorize
邮递员访问令牌 URL:https ://login.microsoftonline.com/98...73/oauth2/v2.0/token
所以也许这里有问题?
更新 2
好的,所以我将 Postman 中的范围更改为与您相同的范围,现在我收到提示,以我创建的名称授予对应用程序的访问权限,这很好。据我记得,指南文章中没有提到有关范围的内容,而 Postman 需要一个范围,所以我创建了一个范围并使用了它 - 显然这是不正确的,应该在该指南文章(Microsoft)中更新。
但是,当我尝试检索可用的 API 时,我仍然收到奇怪的响应。
{
"error": {
"code": "Internal_CompanyNotFound",
"message": "The specified company ID, 98...73, does not exist. CorrelationId: 434d...235d."
}
}
更新 3
删除该错误消息,这是为了尝试检索公司,并且该请求可能有问题。
对可用 API 的请求现在有效 - 似乎整个问题都与指南文章未涵盖的所需范围有关。
感谢卡尔的帮助!:)
更新 4
不过还是有些奇怪。如果我尝试指南文章中提到的请求以获取公司“端点/公司”,我会按预期收到 CRONUS 公司的回复,但如果我随后尝试调用“端点/公司(cronus-company-id)/客户” " 为 CRONUS 获取客户,然后我得到401 "Unauthorized", "The credentials provided are wrong"。如果我尝试获取 CRONUS 的详细信息,也会发生同样的情况。我不明白为什么,因为令牌刚刚被证明有效......
解决方案
推荐阅读
- angular - Angular 9 ERROR SyntaxError:位置 0 处 JSON 中的意外标记 u
- python - 如何在循环中集成进度条?
- curl - jq 命令使用 curl 提供无效的有效负载
- javascript - 移除部分json内容
- xcode - SwiftUI Firestore LazyVGrid 导航随着更多元素而变慢
- javascript - 在获取更新时重绘 vue 组件
- macos - 为什么 NSComboBox 的内容位置不正确?
- dojo - Dojo 绘图初始化
- plsql - ODI 如何使用流控制将记录移动到错误表:错误类型是将字符串插入数字 type.column
- android - 如何使用 Kotlin 在 android 应用程序中支持包括 RtL 在内的多语言?