当前位置: 首页 > 知识库问答 >
问题:

Azure访问令牌-Jwt中的签名无效。木卫一

濮俊美
2023-03-14

这是一场噩梦。我在使用jwt验证Azure访问令牌签名时遇到问题。木卫一。不管我做什么,答案总是无效的签名。

有人能帮忙吗?

我的步骤:

  1. 我从MSALJava应用示例(msal-java-webapp-samp)生成了一个Token Id和Access Token。
  2. 我从我的Azure访问令牌中获得访问令牌头中的孩子访问jwt.io
  3. 我访问https://login.microsoftonline.com/

-----布局-1----

-----开始公开密钥---MIIDBCAE2GAWIBAGIGQQQQQI8GZNKUYPH6CP Kie5IjanBgKQHKIG9W0BAQSFADATMSwkQydVQdeyJHY2NVDW50CY2NLC3Nc3Nb250CM9SLNDPBMRVD3MUBMV0MB4XDTiWgYodawmDawmDawmDawmDawmDawmDawmDawmDawmDawmFowlTermCkGa1EAXmiyWnZY29UdHjVBC53W5Kb3W5DjDc5Dc5Dc5Dc5Dc5Dc3Wb3DcDc5DcDc5Dc3Wb3Dc3DcDcDc3DcDc5DcDcDcDc0CdQQ8CZLIYDX2XROECJOJVKN2PKKJIX9CEJMSDROWAONZCK4VZVX1IYRCWT1WKHB8R1ZPSGA7OXG89ZJKJKJWGJWG46TiamWDZJJ7MHH8FQLZ9PUCY/LICPMJU6D56LKS6HB4OPJYLTVSNUAA BHG1NGNG0FPCxDR9N2Y4JJhrz3VDl4oU0KDZX/PYRXBLZA8KYGWM50DH5WB4WOB8MTVRRGJ8/IGTF9GxPBSO9OWGWBYZU7CTZS7AMUBQ/59IPQL7VSM6ESOQUXDMIQ0QOCZAPIKKKKKKKKWZ0/RHnuBGXxS/E8WX0CAWAAMHMB8WHQYDVR0OBBYEDBYEFGCWWWAQMO25BLH2KHZRM/AS2CMA0GCGSIGGSIBQEBCWUQAA4VQQ4VSM9BYBYBYBYBYBYBYBYBYBYBYBYBYBYBYBYBYBYBYBYBYBYBYBYBYBYBYBYBYBYBYBYBYBYDxichzlefkBkCpW4/MF2IkQ4gQigQigt5T6hCTOSL8WPE8OkKbNCMCU0CpX5NjoqHjBT9Sjod3VpQ7QRMDHx4H4Nnikumi7AWI94IGTX/vlHnAMU4 8Y6SFRQdGICIWPSYYPEA6/O SsEQ7vZ/B4mXlghumXlK9O2MSCI9Porvm5YC9Y/HTN3JU6ElhniHn7MJt6/YumiHn7M9YumiHnYUYUYUYO9/YumiUYUYUYUYUYO9/MBUYUYUYUYUYUYUYUYO9W9W9-----

但结果总是一样的。无效签名。

在我的应用程序中,我使用这个URL。

Request Azure Code Auth
https://login.microsoftonline.com/<Tenant_Id>/oauth2/v2.0/authorize?
client_id=xxxxxx12312xxxxxxxx
&response_type=code
&redirect_uri=http://localhost:8443/<AppName>/secure/aad
&response_mode=query
&scope=openid+profile+offline_access
&state=12345
&prompt=login

---- response ---
localhost:8443/msal4jsample/secure/aad?
code=0.AAAAe7KHdX9Z7oIAA
&amp;state=12345
&amp;session_state=716c6fa7-8b51-4025-98ef-489c3b25ab3d#

请求Azure令牌

Post方法

https://login.microsoftonline.com/common/oauth2/v2.0/token?
grant_type=authorization_code
&code=<Received from above azure code auth request>
&client_id=<Application_Id Registered in Azure>
&client_secret=<Secret Key>
&scope=openid profile email User.Read
&redirect_uri=http://localhost:8443/<MyApp>/secure/aad


---- Response ----

{
    "token_type": "Bearer",
    "scope": "openid profile User.Read email",
    "expires_in": 3599,
    "ext_expires_in": 3599,
    "access_token": "X1YmQ",
    "refresh_token": "PC6YMqqLpvm",
    "id_token": "Y86JentfTUzBQoiUzav3pAu3GIG3OhslQ"
}

为什么当我尝试检查"refresh_token":"PC6YMqLpvm"在www.jwt.io签名是无效的。

拜托,你能告诉我我做错了什么吗?是否需要指示Azure来签署访问令牌?

注意:我使用本教程检查访问令牌的签名。https://blogs.aaddevsup.xyz/2019/03/using-jwt-io-to-verify-the-signature-of-a-jwt-token/

亲切问候,马里奥·罗德里格斯


共有1个答案

魏誉
2023-03-14

您正在为MS Graph API请求由范围参数指定的访问令牌:scope=openid profile email User。阅读。使用者Read是MS Graph API作用域。

这些令牌是特殊的,您不应该验证它们。以任何方式验证其他API的令牌都不是你的应用程序的工作。刷新令牌与此类似,因为您的应用程序无法验证它们。它们只对身份提供者有意义。

您应该验证的唯一标记是访问群体(aud)是应用程序的客户端id或应用程序id URI的标记。

 类似资料:
  • 我正在使用Azure AD对spring boot应用程序进行用户身份验证。我创建了一个应用程序来获取登录用户的访问令牌(令牌创建者应用程序)。在此应用程序中,“/token”API从@RegisteredAuth2AuthorizedClient读取访问令牌,并返回与响应相同的令牌。 然后,我必须使用返回的令牌作为RESTAPI的承载令牌,用于具有相同客户端id和相同配置的另一个应用程序。 但当

  • 我在使用jwt.io验证我的azure广告访问令牌时获得无效签名(在手动检查后将转移到scala代码)。 我正在使用 curl 生成访问令牌: 虽然它为我提供了访问令牌,但响应不包含“Id_token”。不知道为什么。 我正在使用 BEGIN 和 END 证书包装 https://login.microsoftonline.com/common/discovery/keys 中的公钥。(如 htt

  • 我需要使用jwt验证令牌。木卫一 为此,我有一个令牌(许可证)eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0ZW5hbnRJZCI6MjcwMzYwLCJwYWNrYWdlc............" 和json(证书) “密钥”:[{“kid”:“1”,“e”:“AQAB”,“kty”:“RSA”,“alg”:“RS256”,“n”:“rXYc2Ehtb42R

  • 定义的新集成密钥9xxx7e null 但仍然得到401的回应内容:

  • 我很难让Auth0以JWT格式返回访问令牌。我需要JWT格式的文件,以便使用javajwt库验证它们。 我正在使用Auth0登录,并使用获取访问令牌-我尝试将访问群体设置为我们的API标识符(在多个位置,包括lock auth参数和负载),但没有成功-返回访问令牌,但不是JWT。 或者,是否有用于验证“本机”Auth0访问令牌的Java库? 返回的代码用于POST到

  • 我目前正在使用Vapor开发Swift后端。我的iOS客户端使用新的iOS 13功能“使用Apple登录”。当用户登录时,我会得到一个身份令牌(访问令牌),这是一个由Apple签名的有效JWT令牌。这将在所有正在进行的通信中发送到服务器,以验证服务器提供的某些路由。 在服务器上,我想通过验证令牌签名来验证发送的令牌是否确实由Apple签名,并且不是由某些恶意用户专门创建的。Apple提供了一个HT