Azure 签发的 JWT 签名验证

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

您能否协助我们解决与 JWT 令牌验证相关的下一个问题:

最近我们开始为 Microsoft 用户编写单点登录功能。我们遵循本文档 https://learn.microsoft.com/en-gb/entra/identity-platform/v2-oauth2-auth-code-flow 并使用 OAUTH 版本 2。

看起来不错,我们快完成了,但是我们仍然无法通过发布的公钥来验证 JWT 签名。在我们的例子中,我们从以下位置获取这些密钥 https://login.microsoftonline.com/573ae0ae-0a5d-4098-8813-0f140a1c85da/discovery/v2.0/keys

我们使用 PHP 作为编程语言和想法 - 也许是我们与 JWK 使用的库(lcobucci/jwt、firebase/php-jwt)不兼容。

然后我们尝试使用任何流行的在线工具(https://jwt.iohttps://developer.pingidentity.com/en/tools/jwt-decoder.html)来验证它。每次我们都有相同的结果:签名未验证。

您能否给我们一个提示,我们在哪里出错了,因为我们似乎已经尝试了所有可能的方法来找到问题的根本原因?

也许您可以给我们一个代码示例(编程语言并不重要),其中这些对(JWT 和公钥)将在签名验证中起作用?

提前感谢大家提供的宝贵帮助

我希望通过提供的公钥验证 Microsoft 颁发的 JWT 令牌

azure oauth-2.0 jwt openssl jwk
1个回答
0
投票

非常感谢Gary Archer。 解决方案是这里。 根本原因在于 JWT 标头。如果您遇到类似问题,请检查您的 JWT 标头,如果它包含

nonce
项 - 这意味着您收到了错误类型的令牌。请查看 Gary 的博客文章 将自定义范围添加到您的应用程序并将其添加到 OAUTH 查询中。

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