首页 文章

spring security预认证用户登录

提问于
浏览
0

我需要手动将用户登录到由spring security保护的应用程序中 . 我的情景是

  • 用户登录到应用程序1 .

  • 我的 spring 应用程序链接将可用 .

  • 当用户点击链接时,应用程序1会将加密数据发布到我的spring应用程序中的不安全URL .

  • 现在我的控制器将接收加密数据并在应用程序1中调用Web服务,加密数据将在Web服务中传递,我得到一个带有用户名的响应 .

  • 一旦我得到用户名 . 我不想重新认证 . 我只想设置用户主体/身份验证对象并加载仪表板 .

第1步到第4步正在运行 .

在我的不安全控制器(我获取加密数据)中,我有以下几行,但这又是调用我的身份验证管理器,我不想在这种情况下再次进行身份验证 . 我只想创建会话并设置用户主体 .

String username = application1.webservice(encoded data);
    Authentication authentication = new UsernamePasswordAuthenticationToken(username,password);
     SecurityContextHolder.getContext().setAuthentication(authentication);
     return "redirect:/app";

注意:我确实有基于表单的LDAP身份验证工作(如果用户直接登录我的应用程序,将使用此选项)我正在使用spring security 3.2 / Java Config

1 回答

  • 0

    SecurityContextPersistenceFilter 负责在Web请求开始时在 SecurityContextHolder 中设置 SecurityContext . 请求处理期间对 SecurityContext 的任何更改都将在Web请求结束时复制到 HttpSession .

    因此,当您更新 SecurityContext 中的 Authentication 时,此过滤器将在身份验证请求结束时更新 HttpSession .

    您是否可以确认在身份验证响应中发回的 JSESSIONID 是否与所有后续请求相同?

相关问题