2014-02-26 88 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