虽然 MSA 帐户不返回基于 JWT 的,但您可以使用OpenID Connectaccess_token
请求基于 JWT 。id_token
将 OpenID 流程视为 OAuth 2.0 授权代码授权的最简单方法。它使用相同的通用模型和一些附加参数。
进行初始提供程序调用时:
添加id_token
到您的response_type
查询参数。
将openid
, email
, 和添加profile
到scope
查询参数
最终结果应如下所示:
https://login.microsoftonline.com/common/oauth2/v2.0/authorize?
client_id={ID}&response_type=id_token+code&
redirect_uri={URI}&scope=openid+email+profile+offline_access+user.read
然后,您通过授权码授权完成您今天使用的相同工作流程。但是,最后一步现在将id_token
在 JSON 有效负载中包含一个附加属性:
{
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik5HVEZ2ZEstZnl0aEV1Q...",
"token_type": "Bearer",
"expires_in": 3599,
"scope": "https%3A%2F%2Fgraph.microsoft.com%2Fmail.read",
"refresh_token": "AwABAAAAvPM1KaPlrEqdFSBzjqfTGAMxZGUTdM0t4B4...",
"id_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJub25lIn0.eyJhdWQiOiIyZDRkMTFhMi1mODE0LTQ2YTctOD...",
}
This id_token
will also be a JWT based token and can be easily decoded just like you're doing with the JWT access_token
you're getting back from AAD.