【问题标题】:Access Token missing or malformed when calling Graph API调用 Graph API 时访问令牌丢失或格式错误
【发布时间】:2016-09-06 17:39:03
【问题描述】:

遵循本指南:https://azure.microsoft.com/en-us/documentation/articles/resource-manager-api-authentication/#_get-objectid-of-application-service-principal-in-user-azure-ad

我已经到了调用 graph.windows.net 以获取用户 Azure AD 中服务主体的 ObjectId 的阶段。

但是,当我拨打电话时,我收到以下消息:

{"odata.error":{"code":"Authentication_MissingOrMalformed","message":{"lang":"en","value":"Access Token missing or malformed."},"values":null}}

我已经尝试将 clientId 替换为“onmicrosoft.com”地址(所以 graph.windows.net/appname.onmicrosoft.com/...),还是一样消息。

【问题讨论】:

  • 只是对赏金的评论:只要解决了问题,就会得到赏金。
  • 您能向我们展示您的代码示例吗?错误很明显,您丢失了令牌。所以要么您没有发送它,要么没有以 API 期望的方式发送它。
  • @Asaf 我们在使用 Fiddler 检索令牌时遇到了这个问题,原来这是由于应用程序/客户端密钥包含特殊字符,需要将其编码为承载令牌请求的一部分.
  • 我已经尝试了两种建议的解决方案,不幸的是它们都没有奏效。我仍然希望能解决这个问题。
  • 您能否确认您是如何测试对 AzureAD 的调用的,即 Fiddler?您还可以确认您是尝试获取不记名令牌然后调用图形 api 还是使用最近获得的不记名令牌调用图形 api?

标签: azure active-directory


【解决方案1】:

为了扩展我的评论,当应用程序机密包含需要编码的字符时,我们已经看到了这一点。如“+”和“=”

如果您没有使用一些可用的客户端助手或正在使用 Fiddler 或 Postman 进行测试,您将需要在调用图形 api 之前对密钥进行 URL 编码,因此看起来它变成:

“7hIkYG5m7xJQnocThxMc4yPjtbRP7bO41aNC%2bbrEzvo%3d”

【讨论】:

  • 你确定吗?当我这样做时,我得到:“错误”:“无效客户端”,“错误描述”:验证凭据时出错。提供了无效的客户端密码
  • 只是为了确保,这是发布到login.microsoftonline.com/TENANT_ID/OAuth2/Token 时的 client_secret 字段
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-16
  • 2021-09-21
  • 2016-10-18
  • 1970-01-01
  • 1970-01-01
  • 2017-05-19
相关资源
最近更新 更多