首页 > 解决方案 > 为什么 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 会话丢失。

我的令牌配置是

在此处输入图像描述

标签: javaoauth-2.0keycloakopenid-connectkeycloak-services

解决方案


推荐阅读