两个具有不同 access_token 格式的相同 Azure 应用程序 - 一个 JWT,另一个非 JWT

Two identical Azure apps with different access_token format - one JWT, the other non-JWT

当访问 /.auth/me 时,一个应用程序具有正确 JWT 格式的 access_token,但在另一个应用程序中它不是 JWT 格式。

这是有效的 JWT:eyJ0eXAiOiJKV1QiLCJu...eyJhdWQiOiJodHRwczov...B84ciSKwF2oOre5n

这是非 JWT 的:PAQABAAAAAAD--DLA3VO7QrddgJg7WevrTLy

这两个应用的配置似乎相同。

知道如何修复第二个应用程序以同时显示 JWT 访问令牌吗?

  • 通常当认证流程配置没有包含resource 作为参数之一,访问令牌没有 ( JSON Web Token)JWT token 令牌格式。
  • 请尝试将资源与您的应用程序 ID URI 或 您的应用程序需要的资源。要查找 App ID URI,请在 Azure 门户,单击 Azure Active Directory,单击 App 注册,单击服务应用程序,然后单击设置 和属性。
  • 同时在请求中设置clientId和client secret

在其他情况下,您可以使用 id_tokenBearer as response_type as response_type in authorization header as Authorization:Bearer "{your-id-token}".

参考:Oauth 2.0 grant credentials ,Access token request | Microsoft Docs

你可以利用azure resource explorer to edit the properties of the app service auth to include the resource if not already included. See resource provider and types

要获取访问令牌,请尝试使用 Azure 资源浏览器设置资源。

  1. 从应用服务导航到资源浏览器。
  2. 转到配置 > 授权设置并单击编辑。

使用 ["resource="] 更新 additionalLoginParams 并点击 PUT。

例如:

“additionalLoginParams”: [
“resource=https://graph.microsoft.com ”
]

然后通过保存更改并刷新应用服务,再次尝试并检查访问令牌的值是否为 JWT 令牌的形式。