认证单点登录弹簧

时间:2014-07-06 10:01:34

标签: java spring authentication spring-security pre-authentication

我有以下单点登录方案:

  1. 点击门户网站上的网络应用程序链接(http)获取sso集成页面。
  2. sso集成页面在浏览器上出现了一段时间..然后它会自动(http)将数据发布到带有隐藏字段的Web应用程序
  3. Web应用程序接收请求,从请求参数中提取用户信息
  4. Web应用程序调用sso集成以查看用户是否处于活动状态
  5. 收到正面回复,网页应用显示页面。
  6. 我正在使用preauthentication过滤器在Spring安全性中扩展AbstractPreAuthenticatedProcessingFilter,我已经覆盖了这个函数:

    protected Object getPreAuthenticatedPrincipal(HttpServletRequest request) {
        String username = getUserName(request);  // Line1
       // String username = "userA";             // Line2 
        return username;                         // Line 3
    }
    

    函数getUserName执行第3步和第4步。

    当我使用第2行(而不是第1行)时,一切正常,用户可以看到网络应用页面。 当我使用第1行并对其进行调试时,用户名的提取与第2行相同,没有任何异常,但用户获取HTTP错误代码404.在第3行,两个方案都具有相同的值。

    我完全不清楚为什么会发生这种情况或错误在哪里? :(任何人都能指出我正确的方向吗?

    更新:我回忆的Http 404响应是这样的:

    Response Headers    Value
    Set-Cookie  JSESSIONID=b8f8615855da6e92d780f12e2bbe; Path=/<webapp>; Secure; HttpOnly
    

    在浏览器页面刷新时,用户已登录并能够查看该页面。在刷新的情况下,jsessionid不作为url参数出现,但是当我使用第2行时,jsessionid是否作为url参数?我无法理解这种行为。

0 个答案:

没有答案