Java 身份验证单点登录spring
我有以下单点登录场景:Java 身份验证单点登录spring,java,spring,authentication,spring-security,pre-authentication,Java,Spring,Authentication,Spring Security,Pre Authentication,我有以下单点登录场景: 单击门户(http)上web应用的链接以获取sso集成页面 sso集成页面在浏览器上出现一段时间。然后它会自动(http)将数据发布到带有隐藏字段的web应用程序 Web应用程序接收请求,从请求参数中提取用户信息 Web app向sso集成发出Web服务调用,以查看用户是否处于活动状态 收到肯定响应后,web应用程序显示页面 我在spring security中使用了一个扩展AbstractPreAuthenticatedProcessingFilter的预验证筛选器,我
protected Object getPreAuthenticatedPrincipal(HttpServletRequest request) {
String username = getUserName(request); // Line1
// String username = "userA"; // Line2
return username; // Line 3
}
函数getUserName执行步骤3和4
当我使用第2行(而不是第1行)时,一切正常,用户可以看到web应用程序页面。
当我使用第1行并调试它时,用户名的提取与第2行相同,没有任何异常,但用户得到HTTP错误代码404。在第3行,两种方案具有相同的值
我完全不知道为什么会发生这种情况,或者错误在哪里(有人能给我指一下正确的方向吗
更新:我收到的Http 404响应如下:
Response Headers Value
Set-Cookie JSESSIONID=b8f8615855da6e92d780f12e2bbe; Path=/<webapp>; Secure; HttpOnly
响应头值
设置Cookie JSESSIONID=b8f8615855da6e92d780f12e2bbe;路径=/;安全;仅HttpOnly
在浏览器中的页面刷新中,用户已登录并能够查看页面。刷新时,JSSessionID不作为url参数显示,但当我使用第2行时,JSSessionID作为url参数存在?我无法理解此行为。尝试将system.out打印出来,对于
用户名
,我不知道这样做了多少次方法将在一个请求周期中被调用,您可能会看到userA
在一些调用中被正确提取,而不是在其他调用中。我将sys.out.print放在一起,用户名只被打印一次。这个函数被调用一次。它应该被多次调用吗?对此不确定。那么您是说如果您给“userA”如果你给出getUserName(request)
哪个.equals(“userA”)
,它就不起作用了?这是wierdYes它的wierd。我用更多信息更新了问题。当username从getUserName()返回时,它是否有一些尾随空格?