Controlling the login_success response
About this task
In a network topology involving multiple WebSEAL instances controlled by a load balancing system, the request URL can be "lost" during the communication exchange that occurs for the authentication process. For example, it is possible for one WebSEAL instance to receive the request URL (for a protected resource) and present the user with a login form. When the user submits the completed login form, a non-sticky load balancer might send the POST data to a second WebSEAL instance. (Sticky load balancing is the distribution of user requests across a set of servers in such a way that requests from a given user are consistently sent to the same server.)
This second WebSEAL instance can successfully process the login
POST data, but is not able to redirect to the original URL request.
In this case, the second WebSEAL instance sends the login_success.html page
that reports the message "Your login was successful."
There are several possible solutions:
- Use a sticky load balancing system and configure an adequate sticky time (for example, 20-30 seconds) that allows only one WebSEAL instance to process the overall login exchange.
- Modify the WebSEAL configuration file to enable automatic redirection after authentication.
WebSEAL can then redirect the user to a specified response page that can better handle the
post-login process. With automatic redirection WebSEAL no longer uses the
login_success.htmlresponse page. Automatic redirection involves the following stanzas and stanza entries:[enable-redirects] redirect = [acnt-mgt] login-redirect-page =See Automatic redirection after authentication for complete information.
- Modify the
login_success.htmlresponse page so that it redirects the user's browser back in the request history. This technique allows the second WebSEAL instance to receive and process the original request URL. For example:<HTML> <HEAD> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <TITLE>Success</TITLE> </HEAD> <BODY onLoad="history.back()"> ... </BODY> </HTML>