我们在 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 过期设置具有相同的过期时间吗?