So I guess our attack plan might be this:

1. (3.0, 3.1) Document needed Tomcat (and Jetty?) configuration to turn off 
"session fixation problem".
2. (3.2) Implement stateless connection working with BASIC auth (that should 
throw on stateful operations… the only one I can think of is 
"commitChangesToParent"). 
3. (3.2) Provide some pluggable mechanism for session-based stateful 
authentication and operation. (Hmm, would anyone really care about it if we 
have stateless operation)
4. (?) Create some pluggable framework for role-based authorization. E.g. I can 
think even a set of simple rules like "only allow queries mapped in the Modeler 
to be run", "do not allow commits", "do not allow SQLTemplates" should go a 
long way to bring the level of the ROP service security to the level of your 
average web service.

Andrus

On Sep 13, 2012, at 10:24 PM, John Huss <johnth...@gmail.com> wrote:

> My ROP app unfortunately got canned, but I had created a custom login
> message (along with some others) that contained the username and password.
> If correct if would store the User object in the session and then check
> for it on subsequent requests.
> 
> There is quite a bit to be done to properly secure an ROP service even
> beyond authentication.  You really want to be able to limit what queries
> are able to run and which objects can be accessed, and there is no standard
> approach for handling this.  I modeled my approach after what WebObjects
> did, but I didn't complete it.
> 
> On Thursday, September 13, 2012, Andrus Adamchik wrote:
> 
>> Have a bit of an issue with ROP and the latest containers:
>> 
>> https://issues.apache.org/jira/browse/CAY-1739
>> 
>> Essentially with BASIC auth we can no longer force the ROP client to
>> return back to the same session between requests. Both recent Tomcat and
>> Jetty would reset session ID on every request (as every request is under
>> BASIC auth protection). A workaround now is special Tomcat configuration to
>> disable session resets. We can and should document it, but ideally I'd like
>> ROP to work anywhere out of the box.
>> 
>> We can't reliably track the changing session ID on the client, as it will
>> create a client-side race condition.
>> 
>> Long term I think we should reserve BASIC auth for the stateless apps (why
>> create a server side session if we can create a Cayenne stack for every
>> request on the fly). We don't have a stateless option in ROP and this is a
>> shame.
>> 
>> So the question is what to do for stateful apps (and specifically in 3.1
>> where all ROP apps are stateful by definition)? Anyone has implemented ROP
>> auth other than BASIC? (Otherwise I don't understand how this problem
>> wasn't noticed till now).
>> 
>> Andrus
>> 
>> 
>> 
>> 

Reply via email to