2014-02-26 84 views
0

我在使IE8与OpenAM协同工作时遇到了麻烦。我正在使用一个定制的登录模块,它是一个扩展com.sun.identity.authentication.spi.AMLoginModule的java类。我的登录模块完全适用于Firefox,Chrome和最新版本的IE,但IE8使其工作错误。OpenAM登录进程状态

登录模块分两步工作:首先提示输入用户名和密码,然后提示输入验证码。认证过程的两个步骤基于过程状态。因此,我的过程()方法可概括像:

public int process(Callback[] callbacks, int state) throws AuthLoginException { 
    switch (state) { 
    case 1: 
     return processState1(callbacks); 
     break; 
    case 2: 
     return processState2(callbacks); 
     break; 
    } 

    return -1; // -1 indicates success 
} 

在大多数情况下,处理()被调用,状态“1”的第一篇文章(用户名/密码),并用状态“2”后第二POST后(验证码)。但与IE8,该方法被称为两次状态“1”(但具有不同的回调)。

所以我的问题是:你知道如何管理process()方法的“状态”参数吗?换句话说,在登录步骤之间增加这个参数是什么?知道如何在内部管理它可能会帮助我解决与IE8的这个问题。

感谢

回答

0

必须管理模块本身......在“国家”,所以你得到后的初始凭证(和验证他们),你的状态设置为“2”。

当浏览器返回时,OpenAM在内部识别auth模块的新“状态”,因为它提供了代表客户端“认证会话”的'AMAuthCookie'。

+0

非常感谢。所以我猜IE8不会正确发送AMAuthCookie(可能是因为IE8的安全设置)。我将通过分析HTTP请求来以这种方式进行搜索。 – morbac