Example: Form login
For the authentication to proceed appropriately, the action of the login form must always be j_security_check. The following example shows how to code the form into the HTML page...<form method="POST" action="j_security_check"> <input type="text" name="j_username"> <input type="text" name="j_password"> <\form>
Use the j_username input field to get the user name and use the j_password input field to get the user password.
On receiving a request from a Web client, the Web server sends the configured form page to the client and preserves the original request. When the Web server receives the completed Form page from the Web client, it extracts the user name and password from the form and authenticates the user. On successful authentication, the Web server redirects the call to the original request.<html> <META HTTP-EQUIV = "Pragma" CONTENT="no-cache"> <title> Security FVT Login Page </title> <body> <h2>Form Login</h2> <FORM METHOD=POST ACTION="j_security_check"> <p> <font size="2"> <strong> Enter user ID and password: </strong></font> <BR> <strong> User ID</strong> <input type="text" size="20" name="j_username"> <strong> Password </strong> <input type="password" size="20" name="j_password"> <BR> <BR> <font size="2"> <strong> And then click this button: </strong></font> <input type="submit" name="login" value="Login"> </p> </form> </body> </html>
If authentication fails, the Web server redirects the call to the configured error page.<html> <head><title>A Form login authentication failure occurred</head></title> <body> <H1><B>A Form login authentication failure occurred</H1></B> <P>Authentication may fail for one of many reasons. Some possibilities include... <OL> <LI>The user-id or password may be entered incorrectly; either misspelled or the wrong case was used. <LI>The user-id or password does not exist, has expired, or has been disabled. </OL> </P> </body> </html>
After an assembler configures the web application (.war) to use form-based authentication, the deployment descriptor contains the login configuration as shown...<login-config id="LoginConfig_1"> <auth-method>FORMauth-method>FORM> <realm-name>Example Form-Based Authentication Area</realm-name> <form-login-config id="FormLoginConfig_1"> <form-login-page>/login.html</form-login-page> <form-error-page>/error.jsp</form-error-page> </form-login-config> </login-config>
A sample web application (.war) archive (WAR) file directory structure showing login and error pages for the previous login configuration...META-INF META-INF/MANIFEST.MF login.html error.jsp WEB-INF/ WEB-INF/classes/ WEB-INF/classes/aServlet.class
Form logout is a mechanism to log out without having to close all Web-browser sessions. After logging out the form logout mechanism, access to a protected Web resource requires reauthentication. This feature is not required by J2EE specifications, but is provided as an additional feature in WebSphere security.
Suppose that it is desirable to log out after logging into a web application (.war) and perform some actions. A form logout works in the following manner...
- The logout-form URI is specified in the Web browser and loads the form.
- The user clicks Submit on the form to log out.
- The WebSphere security code logs the user out.
- Upon logout, the user is redirected to a logout exit page.
Form logout does not require any attributes in a deployment descriptor. It is an HTML or JSP file that is included with the web application (.war). The form-logout page is like most HTML forms except that like the form-login page, it has a special post action. This post action is recognized by the Web container, which dispatches it to a special internal WebSphere form-logout servlet. The post action in the form-logout page must be ibm_security_logout.
You can specify a logout-exit page in the logout form and the exit page can represent an HTML or JSP file within the same web application (.war) to which that the user is redirected after logging out. The logout-exit page is specified as a parameter in the form-logout page. If no logout-exit page is specified, a default logout HTML message is returned to the user. Here is a sample form logout HTML form. This form configures the logout-exit page to redirect the user back to the login page after logout.<!DOCTYPE HTML PUBliC "-//W3C/DTD HTML 4.0 Transitional//EN"> <html> <META HTTP-EQUIV = "Pragma" CONTENT="no-cache"> <title>Logout Page </title> <body> <h2>Sample Form Logout</h2> <FORM METHOD=POST ACTION="ibm_security_logout" NAME="logout"> <p> <BR> <BR> <font size="2"><strong> Click this button to log out: </strong></font> <input type="submit" name="logout" value="Logout"> <INPUT TYPE="HIDDEN" name="logoutExitPage" VALUE="/login.html"> </p> </form> </body> </html>