由于附加了 "api://",Azure AD 受众无效
Azure AD Audience is Invalid due to "api://" being appended
我有两个 Azure 守护程序应用程序。 App A
和 App B
.
App B
按预期工作。我将 /oauth2/v2.0/token
称为访问令牌。然后我解码令牌并提取角色。
App A
没有..当我解码并验证令牌时,它说“无效的观众”。
当我使用 jwt.ms 查看令牌时,区别在于 App A
将 api://
放在 aud
部分..和 App B
不是。
例如..
App A
: { "aud":"api://3srlk3j..."}
App B
: { "aud":"323f4lk2..."}
是什么导致一个人为一个人添加 api://
而另一个人没有?
audience的值也是由manifest文件中的accesstokenacceptedversion控制的。
当您解码令牌时,您可以检查发行者是否具有 v1 或 v2 端点
"iss": "https://login.microsoftonline.com/xxxxx/v2.0",
例如,这里我有 v2 端点,因此清单中的 accesstokenacceptedversion 必须设置为 2,默认情况下可能为 null 或 1。
"accessTokenAcceptedVersion": 2,
所以请为您的网络应用程序 A 检查相同的内容并相应地设置它。(也为网络应用程序 B 检查相同的内容)然后尝试生成令牌。
此外,如果上述方法不能解决问题,则问题可能出在 Web API 的配置数据上。当我们说 ClientId 时,它是“公开 API”选项下的值,其中显示“Application ID URI
根据您请求访问令牌的方式,令牌的受众可能是 API.
的客户端 ID 或应用程序 ID URI
下面暴露一个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。
我有两个 Azure 守护程序应用程序。 App A
和 App B
.
App B
按预期工作。我将 /oauth2/v2.0/token
称为访问令牌。然后我解码令牌并提取角色。
App A
没有..当我解码并验证令牌时,它说“无效的观众”。
当我使用 jwt.ms 查看令牌时,区别在于 App A
将 api://
放在 aud
部分..和 App B
不是。
例如..
App A
: { "aud":"api://3srlk3j..."}
App B
: { "aud":"323f4lk2..."}
是什么导致一个人为一个人添加 api://
而另一个人没有?
audience的值也是由manifest文件中的accesstokenacceptedversion控制的。 当您解码令牌时,您可以检查发行者是否具有 v1 或 v2 端点
"iss": "https://login.microsoftonline.com/xxxxx/v2.0",
例如,这里我有 v2 端点,因此清单中的 accesstokenacceptedversion 必须设置为 2,默认情况下可能为 null 或 1。
"accessTokenAcceptedVersion": 2,
所以请为您的网络应用程序 A 检查相同的内容并相应地设置它。(也为网络应用程序 B 检查相同的内容)然后尝试生成令牌。
此外,如果上述方法不能解决问题,则问题可能出在 Web API 的配置数据上。当我们说 ClientId 时,它是“公开 API”选项下的值,其中显示“Application ID URI 根据您请求访问令牌的方式,令牌的受众可能是 API.
的客户端 ID 或应用程序 ID URI下面暴露一个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。