java - 为什么 keyclock 显示错误“您已在此会话中作为不同的用户 '0000000021' 进行身份验证。请先注销。”?
问题描述
我正在使用 keyclock 作为授权管理器。如果以用户 (user1) 身份登录并在 1 天后再次尝试登录,它将在输入新用户凭据 (user2) 时重定向到登录页面(SSO 失败),它显示您已在此会话中作为不同的用户“0000000021”进行身份验证。请先退出。但是在检查浏览器时,会保留这 2 个会话,而其他所有会话都丢失了。当我们手动删除除 AUTH 会话之外的所有会话时,可以重新生成问题。我不知道它在真实场景中是如何发生的。
这是显示的错误
当遍历 keyclock 代码时,我看到了这一点。
if (!authSession.getAuthenticatedUser().equals(userSession.getUser())) {
event.detail(Details.EXISTING_USER, userSession.getUser().getId());
event.error(Errors.DIFFERENT_USER_AUTHENTICATED);
throw new ErrorPageException(session, authSession, Response.Status.INTERNAL_SERVER_ERROR, Messages.DIFFERENT_USER_AUTHENTICATED, userSession.getUser().getUsername());
}
但我不知道 Auth 会话何时保持活动状态而 SSO 会话丢失。
我的令牌配置是
解决方案
推荐阅读
- javascript - 使用 Vue CLI 4 和 A Frame 时出错
- visual-studio - F# VS2019 Windows 窗体
- angular - Angular - 从多个请求中获得响应
- java - 使用多个读卡器加载 PKCS 密钥库时出错
- c - 为什么 task_struct 指针和该结构内的字段之间的差异如此之大?
- sql - 从一列中选择与另一列共享值的值
- npm - 如何正确设置本地 ReasonMl / Bucklescript 依赖项
- typescript - WebStorm 在“??”上给出 TypeScript 错误 操作员
- javascript - LET vs VAR 以及从块作用域提升到全局作用域
- swift - iOS 和 AudioKit - 使用 AKNodeFFTPlot 显示 FFT:如何限制频率范围?