【发布时间】:2020-08-13 14:10:21
【问题描述】:
我们正在使用 Azure 活动目录 Oauth 代码流对用户进行身份验证。
我们使用代码获得了 access_token、id_token 和 refresh_token(在重定向 URL 上获得)。
认证成功后,我们使用 id_token 对每个请求进行授权,我们可以使用从/discovery/v2.0/keys api 获得的公钥来验证 JWT。
现在,JWT 将在 1 小时后过期。所以我们需要刷新这个 id_token。
我正在使用下面的 cURL 刷新 id_token
curl --request POST \
--url https://login.microsoftonline.com/{tenant_id}/oauth2/token \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data 'client_id=client%20id&refresh_token=refesh%20token%20&grant_type=refresh_token&client_secret=client_secret&scope=openid
在这个API的响应中,我们得到了access_token,refresh_token,id_token,但是如果你观察id_token,它不包含JWT签名(JWT的第三部分),没有签名我们无法验证JWT
我们找不到任何文档参考为什么 id_token 没有签名部分。 还有其他方法可以刷新 id_token 吗? 如果 id_token 无法刷新,有什么解决办法吗?
【问题讨论】:
标签: azure oauth-2.0 jwt azure-active-directory openid