在 Auth0 的 /userinfo api 端点中发送的不记名令牌是不是会过期?

Posted

技术标签:

【中文标题】在 Auth0 的 /userinfo api 端点中发送的不记名令牌是不是会过期?【英文标题】:Does the bearer token sent in Auth0's /userinfo api endpoint ever expire?在 Auth0 的 /userinfo api 端点中发送的不记名令牌是否会过期? 【发布时间】:2020-01-02 18:39:35 【问题描述】:

我们在我们的 SPA 中使用隐式流设置了 Auth0 和他们的 Lock 小部件 v11。我们在 Auth0 管理门户的应用程序设置中将 JWT 到期时间设置为 15 分钟,并且我们在 Web 应用程序中使用静默身份验证来定期获取新令牌。

该流程运行良好,令牌应按原样过期。我们的问题在于 userinfo 端点。 Auth0 Lock 小部件在内部向 userinfo 端点发出 XHR 请求。在安全检查期间发现,如果我们记录了这样的请求,然后在几个小时后在 Postman 中再次请求,端点仍然会以用户详细信息(例如姓名和电子邮件)进行响应。该请求中发送的不记名令牌与过期时间为 15 分钟的不记名令牌不同。

这对我们来说是一个安全问题,因为在用户选择退出后很长时间仍可以获得基本的用户信息。

在 Auth0 管理门户中,我尝试将租户设置 > 高级下的“不活动超时”/“需要登录后”设置为 1 分钟。我还尝试在应用程序设置下降低“JWT 过期”。这些设置都不会影响仍以用户详细信息响应的用户信息请求。

对 userinfo 端点的请求示例:

GET https://<tenant>.eu.auth0.com/userinfo

Request headers:
Authorization:Bearer <some token with length of 32>

响应示例:


    "sub": "auth0|xxxxxxxxxxxxxxxxxx",
    "nickname": "John",
    "name": "John Doe",
    "picture": "xxxxxxxxxxxx",
    "updated_at": "2019-08-29T12:32:39.352Z",
    "email": "user@example.com",
    "email_verified": true

是否有任何设置可以控制发送到 userinfo 的不记名令牌的到期时间?不应该和应用 JWT 过期设置一样过期吗?

【问题讨论】:

您是否考虑过对上次更新时间超过 15 分钟的令牌进行撤销? GitHub InformationDev.to Link 【参考方案1】:

不幸的是,令牌过期是为端点设置的,无法更改。该文档提供了答案。

https://auth0.com/docs/tokens/guides/access-token/set-access-token-lifetime#access-token-lifetime-for-the-oidc-user-profile-endpoint

【讨论】:

以上是关于在 Auth0 的 /userinfo api 端点中发送的不记名令牌是不是会过期?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Auth0 授权来自我们的 SPA 和其他后端服务的 API 请求

从 API 中访问 Auth0 登录用户?

如何在附加 API 服务 Auth0 中获取访问令牌?

如何在 Android 中打印受 Auth0-JWT 保护的私有 API 端点 JSON 对象?

可以使用 Auth0 JWT 令牌向 Django 后端发送 POST 请求吗?

如何使用 auth0 jwt 识别用户