Am 02.05.2013 08:39, schrieb Erik Jan de Wit:
> Hi,
>
> On May 2, 2013, at 8:23 AM, Thomas Frühbeck <[email protected]> wrote:
>
>> Hi,
>> if I understand right, @InterceptedCall is a _client_ side interceptor, so I
>> would not spend too much effort there :-)
> >From my perspective it's like validation of the model if we can already do
> >something on the client side we should do it there, but because this can be
> >bypassed we cannot rely on it and have to do this on the server as well. And
> >like you mention we can use CDI interceptors for this.
>
>> - "logged in" is a conception, which is most critical server side, the
>> client may not know about current state - checking client side won't really
>> help
> Why is it not allowed for the client to know about the current state? Can't I
> have something like hello #username on my page?
sure you are "allowed" :) - cross cutting concerns (like security)
require IMHO a consistent/clear/stable handling, you would not clutter
_every_ RPC call with a "am I logged in".
The problem is, that the server may anytime decide to cancel the session:
- the client will not notice until trespassing - which could be any
call at any time, depending on server side business logic
- you do _definitely not_ want to have the password linger around
in your client app for later re-use
>> - Errai-Bus is to be regarded as "outside" of container security
>> context, because:
>> - communication shall _normally_ not be prohibited by security -
>> see Bus setup, Login-message
>> - once a message is received, it will be executed
> Could you elaborate on this? What do you suggest that we do?
short wrap-up of what we tried:
- Errai Authentication: sorry, I evidently didn't understand how to
handle the async events and bridge that with e.g. EJB3 Security,
SeamSecurity, container based security, perhaps an unfortunate lack of
know how - hindlooking we just started on the wrong foot?
- Container Based Security: wont work, because it relies on
JSESSIONID cookie, the same being used by the bus (right?), so
Session.invalidate() means to interrupt the bus
- frameworks like PicketLink are versatile, tested, powerful,
annotation driven, easy to apply, best practice - that's what we settled
with and it _works_.
Personal conclusion: Errai is _more_ than a simple web client, forget
"security-constraint" in web.xml and blah.. (which is IMHO crap anyway)
We ended up with:
- a (simple) client side "ProgressInterceptor" handling cross
cutting concerns like: timeout, modality of UI, redirection on security
exception
- server side org.jboss.seam.security.SecurityInterceptor in
beans.xml and any relevant bean applied Seam @LoggedIn, etc.
- login/logout service - yes, nearly the same as Errai
Authentication, see above, hindlooking blah..
- authentication by SeamSecurity (brings PicketLink, JAAS, powerful
role/permission managent) - perhaps later exchange with DeltaSpike? No
problem!
Best Practice? I'm not sure :) But man, I am happy that it works
reliably, that's a stack you won't starve on easily.
Comments welcome!!!
Regards,
Thomas
_______________________________________________
errai-dev mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/errai-dev