Audience 的值也由清单文件中的 accesstokenacceptedversion 控制。解码令牌时,您可以检查颁发者是否具有 v1 或 v2 端点
"iss": "https://login.microsoftonline.com/xxxxx/v2.0",
例如这里我有 v2 端点,所以清单中的 accesstokenacceptedversion 必须设置为 2,默认情况下可能为 null 或 1。
"accessTokenAcceptedVersion": 2,
因此,请为您的网络应用 A 进行相同的检查并进行相应的设置。(同时为网络应用 B 进行检查),然后尝试生成令牌。
此外,如果仅靠上述方法不能解决错误,则问题可能是 Web API 的配置数据。当我们说 ClientId 时,它是“公开 API”选项下的值,其中显示“应用程序 ID URI 根据您请求访问令牌的方式,令牌的受众可能是客户端 ID 或应用程序 ID URI API。
这里在暴露一个 API 下,它的 App ID Uri 为 api://xxxxx,同样必须在应用程序设置中设置为客户端 ID。
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"Domain": "myportal.onmicrosoft.com",
"TenantId": "mytenant-guid",
"ClientId": "api://xxxxx"
},
因此,请在两个应用程序(A 和 B)中使用它们各自的应用程序 ID URI 在其应用程序注册中检查此匹配。