在單一 Application Server 實例中,使用者經過應用程式認證後,即無需分別經在相同實例上執行的其他應用程式重新認證。這稱為單次登入。如需更多資訊,請參閱「Sun Java System Application Server Enterprise Edition 8.2 Developer’s Guide」中的「User Authentication for Single Sign-on」。
若要使該功能在 HTTP 階段作業防故障備用到叢集中另一個實例後仍然可用,必須將單次登入資訊保留在 HADB 中。若要保持單次登入資訊,首先請啟用伺服器實例和 Web 容器的可用性,然後啟用單次登入狀態容錯移轉。
您可以使用 Admin Console 在 [可用性服務] 的 [Web 容器可用性] 標籤中啟用單次登入狀態容錯移轉 (如配置 Web 容器的可用性中所述),還可以使用 asadmin set 指令將配置的 availability-service.web-container-availability.sso-failover-enabled 特性設定為 true。
例如,如下使用 set 指令,其中 config1 為配置名稱:
asadmin set --user admin --passwordfile password.txt --host localhost --port 4849 config1.availability-service.web-container-availability. sso-failover-enabled="true"
可以透過單一名稱和密碼的組合存取的應用程式構成一個單次登入群組。對於與應用程式 (是單次登入群組的一部分) 相對應的 HTTP 階段作業,如果其中一個階段作業逾時,其他階段作業並不會失效,並且仍然可用。這是因為一個階段作業的逾時不應影響其他階段作業的可用性。
因此,如果一個階段作業逾時並且您嘗試從執行該階段作業的同一瀏覽器視窗存取相應的應用程式,則無需再次進行認證。但是將建立一個新的階段作業。
以屬於含有其他兩個應用程式的單次登入群組的購物車應用程式為例。假設其他兩個應用程式的階段作業逾時值大於購物車應用程式的階段作業逾時值。如果購物車應用程式的階段作業逾時,並且您嘗試從執行該階段作業的同一瀏覽器視窗執行購物車應用程式,則無需再次進行認證。但是,前一輛購物車將遺失,並且必須建立一輛新的購物車。即使執行購物車應用程式的階段作業已逾時,其他兩個應用程式也會繼續照常執行。
類似地,可假定與其他兩個應用程式中的任何一個應用程式對應的階段作業逾時。當從執行該階段作業的同一瀏覽器視窗連線應用程式時,您無需再次進行認證。
此運作方式僅適用於階段作業逾時情況。如果啟用了單次登入,並且使用 HttpSession.invalidate() 令其中一個階段作業失效,則屬於單次登入群組的所有應用程式之階段作業都將失效。如果您嘗試存取屬於單次登入群組的任一應用程式,則需要再次進行認證,系統將為存取該應用程式的用戶端建立一個新的階段作業。