我需要手动将用户登录到由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 回答
SecurityContextPersistenceFilter
负责在Web请求开始时在SecurityContextHolder
中设置SecurityContext
. 请求处理期间对SecurityContext
的任何更改都将在Web请求结束时复制到HttpSession
.因此,当您更新
SecurityContext
中的Authentication
时,此过滤器将在身份验证请求结束时更新HttpSession
.您是否可以确认在身份验证响应中发回的
JSESSIONID
是否与所有后续请求相同?