<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<body link="#355491" alink="#4262a1" vlink="#355491" style="background: #e2e2e2; margin: 0; padding: 20px;">
<div>
        <table cellpadding="0" bgcolor="#FFFFFF" border="0" cellspacing="0" style="border: 1px solid #dadada; margin-bottom: 30px; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                <tbody>
                        <tr>
                                <td>
                                        <table border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" style="border: solid 2px #ccc; background: #dadada; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                                                <tbody>
                                                        <tr>
                                                                <td bgcolor="#000000" valign="middle" height="58px" style="border-bottom: 1px solid #ccc; padding: 20px; -moz-border-radius-topleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 5px; -webkit-border-top-left-radius: 5px;">
                                                                        <h1 style="color: #333333; font: bold 22px Arial, Helvetica, sans-serif; margin: 0; display: block !important;">
                                                                        <!-- To have a header image/logo replace the name below with your img tag -->
                                                                        <!-- Email clients will render the images when the message is read so any image -->
                                                                        <!-- must be made available on a public server, so that all recipients can load the image. -->
                                                                        <a href="http://community.jboss.org/index.jspa" style="text-decoration: none; color: #E1E1E1">JBoss Community</a></h1>
                                                                </td>
                                                        </tr>
                                                        <tr>
                                                                <td bgcolor="#FFFFFF" style="font: normal 12px Arial, Helvetica, sans-serif; color:#333333; padding: 20px; -moz-border-radius-bottomleft: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 5px; -webkit-border-bottom-left-radius: 5px;"><h3 style="margin: 10px 0 5px; font-size: 17px; font-weight: normal;">
Re: Multiple Wars Sharing a Login Page
</h3>
<span style="margin-bottom: 10px;">
created by <a href="http://community.jboss.org/people/jamesc1">James C</a> in <i>JBoss Web Development</i> - <a href="http://community.jboss.org/message/634483#634483">View the full discussion</a>
</span>
<hr style="margin: 20px 0; border: none; background-color: #dadada; height: 1px;">
<div class="jive-rendered-content"><p>This was the solution I went with if anyone later is interested.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>I extended the standard FormAuthenticator class and overrode the methods forwardToLoginPage and forwardToErrorPage.  These two methods use a RequestDispatcher in order to forward the request to the login page.  The problem is that it forwards the page within the current context and does not go outside of the context.  I discovered that you can forward outside of the current context by using the ServletContext.getContext(String uri) method to acquire the context that the login page resides in.  So I simply changed </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><pre class="jive-pre"><code class="jive-code">
RequestDispatcher disp = this.context.getServletContext().getRequestDispatcher(config.getLoginPage());
</code></pre><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>to</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><pre class="jive-pre"><code class="jive-code">
RequestDispatcher disp = this.context.getServletContext()
                .getContext("/myLoginPageContext")
                .getRequestDispatcher("/myLoginPage.jsp");
</code></pre><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>Two small things to note.  First is that anything linked to inside myLoginPage.jsp must contain the whole path not just the name.  For example</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><pre class="jive-pre"><code class="jive-code jive-xml"><span class="jive-xml-tag"><img src="/myLoginPageContext/logo.jpg" /></span></code></pre><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>Second, is that if you do not include an entry for form-login-page and form-error-page in the web.xml then the FormAuthenticator will crash while attempting to compare the requestUri with login page's uri.  I didn't want to bother putting the path in every web.xml or worry about changing them all later in the event the path to the login page changes so I overrode the Invoke method inside my new FormAuthenticator set the loginConfig to the paths I already defined in the class and used in the previously mentioned methods.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>Well that was it.  If anyone comes across this and sees an immediate problem in security by doing this please let me know.  If not then maybe it'll help someone else trying to do this later.</p></div>
<div style="background-color: #f4f4f4; padding: 10px; margin-top: 20px;">
<p style="margin: 0;">Reply to this message by <a href="http://community.jboss.org/message/634483#634483">going to Community</a></p>
        <p style="margin: 0;">Start a new discussion in JBoss Web Development at <a href="http://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2112">Community</a></p>
</div></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</div>
</body>
</html>