spring security预认证用户登录

时间:2016-03-26 13:46:52

标签: java spring-mvc authentication spring-security

我需要手动将用户登录到由spring security保护的应用程序中。 我的方案是

  1. 用户登录应用程序1.
  2. 我的弹簧应用程序链接将可用。
  3. 当用户点击链接时,应用程序1会将加密数据发布到我的spring应用程序中的不安全URL。
  4. 现在我的控制器将接收加密数据并调用Web服务     在应用程序1中,加密数据将在Web服务中传递,我得到一个用户名的响应。
  5. 一旦我获得了用户名。我不想重新认证。我只想设置用户主体/身份验证对象并加载仪表板。
  6. 步骤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 :(得分:0)

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

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

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