I had a very similar problem, I ended up fixing it by setting an
absolute path to the realm.properties file.


<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN"
"http://jetty.mortbay.org/configure.dtd";>
<Configure class="org.mortbay.jetty.webapp.WebAppContext">
   <Get name="SecurityHandler">
      <Set name="UserRealm">
         <New class="org.mortbay.jetty.security.HashUserRealm">
            <Set name="name">file</Set>
            <Set name="config">C:\gwt-2.0.0\realm.properties</Set>
         </New>
      </Set>
   </Get>
</Configure>



On Jan 13, 8:20 am, "Ian.G" <[email protected]> wrote:
> Hi Alberto,
>
> thanks for getting back on this.
>
> We have our app secured again now - but I'm far from happy with the
> approach I've taken right now.  As I couldn't decide on appropriate
> paths to watch with the filter I've removed it and gone with the dirty
> hack approach of just mining information out of the
> InvocationException that comes in the onFailure call on our
> AsyncCallback class.
>
> I check a very specific meta tag thats in the login page and if its
> present I know this is as a result of the session being invalidated by
> the container and the client end of the rpc call has the login page
> instead of the response from the service.
>
> This is because I couldn't easily tell in my filter that we'd ended up
> at the login page for a valid reason (i.e. the user is trying to
> access the app for the first time and needs to authenticate) or
> because of a session timeout and them needing to re-authenticate.
>
> We don't actually use the HTTP Session for anything - its purely there
> as a means to using the security part of J2EE to restrict access to
> our app.
>
> It all gets a bit messy really.  So if getMessage() from the
> InvocationException can be proven that it contains my login page
> source I give the user a message on the screen and cause the main page
> of the app to reload by doing
>
> Window.Location.reload();
>
> Obviously because there is no session the app server redirects them to
> the login page first so they can authenticate and then goes back to
> the main page.
>
> Its not pefect but it will do for now.  I'm not prepared to have the
> client end of the application performing some sort of timed ping
> against the server just to keep the session alive (you may as go with
> a session timeout of -1 if thats your approach - it serves the same
> perpose without writing any code), or trying to anticipate session
> loss by using some sort of countdown timer on the client.  I don't
> believe those kinds of solutions are good ones  (especially when
> thinking about client machine hibernation or network disconnection
> etc).  If our application used spring at the back end we could
> consider using the acegi security stuff - but it doesn't so I'n not
> prepared to introduce an entire framework just for this.
>
> I'll try and get some time to raise the realm injection errors as an
> issue as you have proven this isn't just specific to me - its probably
> down to how the GWT plugin creates the JeTTY instance that is now
> leading to these errors.  I'm pretty sure 1,7 and 2.0 versions of GWT
> both used the JeTTY 6.x libs.
>
> Thanks again
>
> Ian.
>
> On Jan 13, 11:06 am, lemaiol <[email protected]> wrote:
>
>
>
> > Hi Ian,
>
> > Sorry, I missed something in your previous post and the problem I
> > solved was a little different but in our case was masking the second
> > one you describe here. I can confirm that we also have the same
> > behaviour so I would suggest creating an issue.
>
> > Cheers,
> > Alberto
>
> > On Jan 8, 12:08 pm, "Ian.G" <[email protected]> wrote:
>
> > > Hi Alberto,
>
> > > thanks for taking the time to reply.
>
> > > I've changed the wireup of the realm in jetty-web.xml so it more
> > > closely matches what you have (i.e instead of doing <Call
> > > name="setUserRealm"> we now do a <Set name="UserRealm">).  So our
> > > jetty-web.xml now looks like this:
>
> > > <?xml version="1.0"?>
> > > <!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN"
> > > "http://jetty.mortbay.org/configure.dtd";>
> > > <Configure class="org.mortbay.jetty.webapp.WebAppContext">
> > >         <Get name="SecurityHandler">
> > >                 <Set name="UserRealm">
> > >             <New class="org.mortbay.jetty.security.HashUserRealm">
> > >                 <Set name="name">SecurityTestRealm</Set>
> > >                 <Set name="config"><SystemProperty name="jetty.home"
> > > default="."/>/WEB-INF/etc/realm.properties</Set>
> > >             </New>
> > >         </Set>
> > >         </Get>
> > > </Configure>
>
> > > We still get the same errors as I originally reported.  I think the
> > > way we inject the Realm into the JeTTY SecurityHandler is still almost
> > > the same - just slightly different XML notation for doing the set.
>
> > > The Realm does in fact work and when we hit the GWT start page for the
> > > app it does in fact re-direct to the login page as you would expect as
> > > stated in my previous response.
>
> > > I guess for now the errors that come out can be treated as noise
> > > because the realm does in fact work - its just the [WARN] Unknown
> > > realm: SecurityTestRealm message that goes to the console implies that
> > > it wouldn't.
>
> > > The next thing I have to do now is re-build my Filter that intercepts
> > > login re-directs when the client-side JavaScript makes an RPC call and
> > > the session has expired.  I unfortuately lost this class as I hadn't
> > > dropped it into our svn repo before I rebuilt my entire eclipse
> > > environment (doh!).  Its not too bad so I should have that back again
> > > soon.
>
> > > I hope I can get to the point where I can document what I think is
> > > probably the most straight forward way of getting J2EE container
> > > managed security and sessions working with GWT.  There are lots of
> > > chunks of useful information about this out there - but there isn't a
> > > single source of information that pulls it all together with a full
> > > working example for people to study.  Maybe I will try and do this.
>
> > > Regards
>
> > > Ian.
>
> > > On Jan 8, 9:47 am, lemaiol <[email protected]> wrote:
>
> > > > Hi Ian,
>
> > > > It seems that the Jetty version could have changed and also its API.
> > > > Try with this little change in the syntax of the configuration (we
> > > > guessed it looking at the jetty classes API and it worked for us):
>
> > > > cheers,
> > > > Alberto
>
> > > > <?xml version="1.0"?>
> > > > <!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN"
> > > >         "http://jetty.mortbay.org/configure.dtd";>
> > > > <Configure class="org.mortbay.jetty.webapp.WebAppContext">
> > > >     <Get name="SecurityHandler">
> > > >         <Set name="UserRealm">
> > > >             <New class="org.mortbay.jetty.security.HashUserRealm">
> > > >                 <Set name="name">MyRealm</Set>
> > > >                 <Set name="config">WEB-INF/dev_realm.properties</Set>
> > > >             </New>
> > > >         </Set>
> > > >     </Get>
> > > > </Configure>
>
> > > > On Jan 6, 3:32 pm, "Ian.G" <[email protected]> wrote:
>
> > > > > Hi Folks - my first post on the discussion group so big thanks to
> > > > > everyone involved in this great project.
>
> > > > > We've recently moved up to GWT 2.0 from GWT 1.7 and everything has
> > > > > gone quite smoothly so far.
>
> > > > > One of the issues I have with the application I'm developing is that
> > > > > it needs to be secured by J2EE security and correctly manage session
> > > > > timeout etc.
>
> > > > > I know there are lots of hazy bits of information about how/how not to
> > > > > do this along with potential problems the developer faces with the 
> > > > > GWT-
> > > > > RPC interface calls from the client after the session has expired etc.
> > > > > - but I think in GWT 1.7 we had a 99% working solution to this that
> > > > > wasn't anything whacky like using client-side timers to keep the
> > > > > session alive - I just need to continue on and complete it now we've
> > > > > moved over to GWT 2.0
>
> > > > > I'll describe the problem and to take away the need to understand
> > > > > anything specific to my app so this can all be re-produced from a std
> > > > > wizard-generated GWT project in ecliipse 3.5 (i.e. the Greeting sample
> > > > > that gets built when you start a new project).  This sample wont
> > > > > gracefully manage session expiry with GWT-RPC – but it will show a
> > > > > problem that I think I've found with the GWT 2.0 eclipse plugin and
> > > > > J2EE authentication.
>
> > > > > This is the start of how I previously made GWT (before version 2.0)
> > > > > use J2EE security - and get realm-based security working in the
> > > > > Eclipse DEV environment (and thus whatever container we deploy into
> > > > > for production systems from the app's .war file).
>
> > > > > in the applications WEB-INF directory I have a jetty-web.xml that
> > > > > contains the following:
>
> > > > > <?xml version="1.0"?>
> > > > > <!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN"
> > > > > "http://jetty.mortbay.org/configure.dtd";>
> > > > > <Configure class="org.mortbay.jetty.webapp.WebAppContext">
> > > > >         <Get name="SecurityHandler">
> > > > >                 <Call name="setUserRealm">
> > > > >                         <Arg>
> > > > >                         <!--  Hash File-based Security Realm -->
> > > > >                         <New 
> > > > > class="org.mortbay.jetty.security.HashUserRealm">
> > > > >                                 <Set 
> > > > > name="name">SecurityTestRealm</Set>
> > > > >                                 <Set name="config"><SystemProperty 
> > > > > name="jetty.home"
> > > > > default="."/>/WEB-INF/etc/realm.properties</Set>
> > > > >                                 <Set name="RefreshInterval">5</Set>
> > > > >                         </New>
> > > > >                         </Arg>
> > > > >                 </Call>
> > > > >         </Get>
> > > > > </Configure>
>
> > > > > This is obviously used to inject a security realm into the JeTTY
> > > > > instance that runs within the Eclipse plugin for GWT.  This has always
> > > > > worked perfectly on GWT 1.7 (using the old external hosted mode
> > > > > runtime).
>
> > > > > Then down in WEB-INF/etc/realm.properties we just add our users, and
> > > > > role mappings as per the JeTTY documentation - for example:
>
> > > > > username: password,testrole
>
> > > > > At this point when I start the application I know the embedded JeTTY
> > > > > server within the GWT plugin for eclipse is picking up the jetty-
> > > > > web.xml file as it complains if the realm file can't be found if I
>
> ...
>
> read more »- Hide quoted text -
>
> - Show quoted text -
-- 
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-web-toolkit?hl=en.


Reply via email to