Adrian, Andy,

I really like the idea of consolidating the security down to a single
file, that would certainly make some implementations a whole lot easier!

I've been trying to think of a good example of where the object security
would be used, did you have a specific example in mind where this would
be useful Adrian?

- Andrew

On Mon, 2007-01-08 at 09:06 -0800, Adrian Crum wrote:
> Andy,
> 
> Thanks for bringing this up. There have been some security implementation 
> issues 
> in the back of my head for a while now, and I guess this is a good time to 
> bring 
> them up.
> 
> 1. I would like to see the security java class extended to handle things like 
> this, PLUS have it extended to handle the permissions & password maintenance. 
> Here's why: if all security operations (CRUD permissions + authentication) 
> were 
> handled by a single java class, then that single class could be replaced with 
> a 
> custom implementation. The framework provides some of that capability 
> (http://ofbizwiki.go-integral.com/Wiki.jsp?page=Securitydeveloper). What I'm 
> picturing is something like moving the securityext services to the 
> org.ofbiz.security.Security interface. In other words, the interface would 
> create/update/delete permissions/passwords in addition to checking them.
> 
> If that was done, then I could do exactly what that wiki page says - extend 
> org.ofbiz.security.Security, write my own security handler, and that's it. 
> Right 
> now I would have to write my own security handler PLUS write my own version 
> of 
> the securityext component.
> 
> If ALL security operations were handled through a single security interface, 
> then I could swap out OFBiz's security scheme with, let's say, an LDAP 
> version.
> 
> 2. I would also like to see the security services handle the concept proposed 
> in 
>   https://issues.apache.org/jira/browse/OFBIZ-455. Right now that issue is 
> "in 
> my court" and I've been thinking a lot about it lately. What I've concluded 
> is 
> that I would be developing a set of services that parallel the security 
> services. It would be better if the security services could accomodate this 
> kind 
> of parameterization.
> 
> This could be accomplished by extending the security interface to check 
> permissions for ANY OBJECT, instead of just user login IDs. The main weakness 
> in 
> OFBiz's security implementation is the assumption that permission checking 
> will 
> be done only on users.
> 
> If that change was made, then any type of permissions checking can be 
> performed.
> 
> Example:
> Object A wants to modify Object B.
> 
> Implementation:
> If Object A and Object B are members of the same permission context, then
>    If Object A has modify permission in that context AND Object B has 
> modify-able permission in that context, then
>      Object A granted permission to modify Object B
> 
> 
> 
> 
> Andrew Zeneski wrote:
> > It is my believe and I am sure there are others who agree, the base  
> > permission scheme in OFBiz just doesn't cut it for application  specific 
> > security.
> > 
> > What I want to propose and make an initial decision on is a generic  
> > schema for developing custom security implementations for specific  
> > application purposes.
> > 
> > What I checked in to SVN today is an initial idea I have for  
> > implementing this. I called it ServiceSecurity.java. In any service  
> > definition you can specify a class to call to decide if a user has  
> > permission to invoke the service.
> > 
> > Since this is a generic interface this allows the following:
> > 
> > 1) A simple method implementation. We can implement this interface to  
> > call a simple method which would return a boolean. Then security  
> > permissions can be implemented using simple methods (i.e. there are a  
> > number of these types of methods already in OFBiz today, so this  would 
> > be a good first step).
> > 
> > 2) A service implementation. Having a interface service which returns  a 
> > Boolean object to decide if the user has permission.
> > 
> > 3) A custom Java implementation. Create a new class which implements  
> > this interface which has a single method hasPermission().
> > 
> > The reason I went this direction was to provide a very generic and  
> > flexible way to implement security. It has been brought to my  attention 
> > that all we really need is to do this via a service, which  in turn 
> > could be simple method, java or whatever.
> > 
> > I am now opening the floor to discussion; should we stick with a  
> > generic interface and implement various classes to handle different  
> > options, change this only operate as a service call, or should we do  
> > something completely different.
> > 
> > As always the decision made here is never final, technologies may  
> > change, new ideas arise, but what I really want to do now is settle  on 
> > our initial plan of attack.
> > 
> > To see what is there today, see the new ServiceSecurity.java  interface 
> > and the permission section of a service definition  (services.xsd).
> > 
> > Andrew
> > 
> > 
> > 
-- 
Kind Regards
Andrew Sykes <[EMAIL PROTECTED]>
Sykes Development Ltd
http://www.sykesdevelopment.com

Reply via email to