【问题标题】:Power Automate Custom Connector - Token Invalid, Invalid AudiencePower Automate 自定义连接器 - 令牌无效、无效受众
【发布时间】:2021-10-21 08:53:04
【问题描述】:

我之前构建了一些自定义连接器,但由于某种原因,在获取自定义连接器以针对我编写的 api 进行身份验证时遇到了实际问题。

API 是用 .netcore 5 编写的,作为 WebApp 托管在我尝试连接的同一租户中。我检查了身份验证设置,并且 ClientId 指向下图中的 37008370 clientid guid。

这就是我在连接器中设置身份验证的方式

我已使用 blazor 应用程序连接到此 API,因此我认为身份验证设置正确。

当我尝试为自定义连接器设置身份验证时,虽然收到以下响应

{  "content-length": "0",  "date": "Wed, 20 Oct 2021 10:11:51 GMT",  "request-context": appId=cid-v1:4e1e4b6a-ace8-48e9-8121-546d6e834953",  "www-authenticate": "Bearer error=\"invalid_token\", error_description=\"The audience 'api://37008370-*********' is invalid\"",  "x-ms-apihub-cached-response": "false",  "x-powered-by": "ASP.NET"}

我认为我已经正确设置了所有内容,但看不到哪里出错了。

任何帮助表示赞赏。

谢谢

斯图尔特

【问题讨论】:

  • 您是否尝试过将 clientId 作为应用程序 ID Uri(来自门户),即; clientId:api://3700xxx-xxx 在您的应用设置中。
  • 您的意思是直接针对 API 进行身份验证吗?从我读过的文档来看,这不是正确的方法。
  • 它确实有效。这样做有什么缺点?
  • 据我所知,我认为这种方式没有任何缺点。实际上在后端取决于您使用的令牌版本,它在某些情况下会添加 api:// 前缀.
  • 如前所述发布使用客户端 ID 的答案。如果有帮助,您可以接受它作为答案:) 要将答案标记为已接受,请单击答案旁边的复选标记以将其从灰色切换为已填充。

标签: azure-active-directory power-automate power-automate-custom-connector


【解决方案1】:

令牌的受众应始终与注册的应用程序的客户端ID匹配。错误的原因是相同的。受众是 api://xxxx-xx 和客户端 id=3700-xxx。 资源可以是资源的 App ID GUID,也可以是在资源上注册的有效 App ID URI。 AAD 应该能够根据您提供的价值确定您尝试访问的资源。

请注意,如果您使用 App ID GUID,您将从 AAD 获得令牌 其中 Audience 声明是 App ID GUID。或者,如果您使用 App ID URI,您将在 令牌。

所以这里你需要在代码的应用设置中添加clientId :api://xxxxx-xxxx(这是应用程序 ID uri,存在于 azure 广告应用注册门户的公开 api 刀片中)。

azure 为令牌生成的“aud”值也由 AD 应用程序清单中的“accessTokenAcceptedVersion”属性控制。

此属性定义将生成的访问令牌的版本。 在http://jwt.io 中检查你的 jwt 令牌,如果你得到这个。 检查您的天蓝色广告的清单 .app"accessTokenAcceptedVersion" 属性值可能是 null 或一,或者应该是二。如果它为空,则可能要考虑添加 api:// 前缀。 else api://前缀可以忽略。

【讨论】:

    猜你喜欢
    • 2018-11-15
    • 2021-07-20
    • 1970-01-01
    • 1970-01-01
    • 2017-04-16
    • 2016-12-23
    • 2022-10-21
    • 2018-12-04
    • 1970-01-01
    相关资源
    最近更新 更多