使用证书/公钥对 Azure AD 客户端凭据令牌进行身份验证

问题描述 投票:0回答:1

我正在从 azure 的令牌端点获取客户端凭据令牌 - https://login.microsoftonline.com//oauth2/v2.0/token

此后,我将令牌中的“孩子”与https://login.microsoftonline.com//discovery/v2.0/keys

中可用的孩子进行匹配

并使用 x5c 中的值作为证书来验证令牌,但它给出的错误为

com.auth0.jwt.exceptions.SignatureVerificationException: The Token's Signature resulted invalid when verified using the Algorithm: SHA256withRSA

我使用“https://graph.microsoft.com/.default”作为获取令牌的范围,但仍然无法工作 Azure AD 令牌签名验证无效。使用算法验证时,令牌的签名无效:SHA256withRSA

azure jwt signature microsoft-entra-id clientcredential
1个回答
0
投票

注意:您无法将包含 aud 的访问令牌验证为 Microsoft Graph,即

https://graph.microsoft.com
00000003-0000-0000-c000-000000000000

  • 仅必须验证适用于应用程序的访问令牌。
  • Microsoft Graph 访问令牌旨在与 Microsoft 服务一起使用。

最初,我通过将 scope 传递为

https://graph.microsoft.com/.default

来生成访问令牌
https://login.microsoftonline.com/TenantID/oauth2/v2.0/token

client_id : ClientID
scope : https://graph.microsoft.com/.default
client_secret : ClientSecret
grant_type : client_credentials

enter image description here

解码时我得到无效签名错误:

enter image description here

因此,您可以直接使用 Microsoft Graph API 访问令牌而无需验证它。

您可以验证应用程序的令牌,如下所示:

我公开了一个API,创建了应用程序角色并添加了API权限:

enter image description here

现在我通过将 scope 传递为

api//ClientID/.default

来生成令牌

enter image description here

签名验证成功:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.