--- On Sun, 5/3/09, Andrew Zeneski <andrew.zene...@hotwaxmedia.com> wrote:
> What you are describing here is very similar to the
> process-based authorization system which I proposed, the
> main differences is in my proposal everything is defined in
> a process [permission] string where this is based on
> artifacts. I think I need to understand this more, as I
> don't really see yet how it would work.
> 
> You mention there is no permission-checking code, but you
> also mention that if the user has a specific permission then
> the screen is displayed. This is the confusing part to me
> right now. How does the "domain" know if a user
> has permission if there is no permission checking code?

I could have been more detailed in my description, so I apologize for the 
confusion. As far as implementation details are concerned, I intentionally left 
those out. The idea is to come up with a design for security first. Once that 
design is finalized, we can start working on implementation.

The security domain is just a representation of how OFBiz artifacts are laid 
out. It's like a picture of a car. You can't drive the picture, but you can 
drive the car.

Each artifact registers itself in the domain. I gave an example using a 
<security> element. Following the picture analogy, each <security> element adds 
something to the picture.

When a user attempts to access the artifact, the artifact takes its location in 
the security domain, and the user login (or whatever) and passes that 
information to an authentication mechanism. The authentication mechanism 
returns a set of permissions (create, update, delete, view, etc). The artifact 
takes those permissions and uses them accordingly (display a screen or return a 
permission error, display form data as text, or display form data as input 
fields).

To continue with the picture analogy, when the user enters the picture there 
will be artifacts there he/she can interact with. Let's say the picture 
includes a car, a boat, and lawn mower. The user's ability to start the engine 
on the car, boat, or lawn mower depends upon their "start engine" permission 
for each. In other words, the car says to the authentication mechanism, "I am a 
car. Give me the car permissions for user Adrian." The authentication mechanism 
returns a list of permissions. If one of those permissions is "start engine" I 
am able to start the car.

> Display a list of example records, for the records the user
> can update display the update button, for the records the
> user can delete show the delete button. For the records
> which the user does not have these permissions don't
> display the button.

Entities are no different than any other OFBiz artifact - they register 
themselves in the security domain. Entities could extend the <security> element 
with additional elements and attributes that define user permission on each 
record.

> When delete is pressed, we need to make sure the user
> really does have access to delete this record, how can we
> verify this?

The Delete button would know to appear only when the user has delete 
permission. If the permission doesn't exist, then the button doesn't appear.

> My followup question will be, how do I customize the access
> logic for a specific client so that I can maintain my own
> logic in a private component and avoid problems when
> updating applications?

Why would you want to do that? I can't think of a reason why a security system 
would need to be changed.

> For me these are the most important requirements (very
> granular control and ease of customizing without modifying
> files in the application).

I'm confident it will meet most security needs. The concept is not mine - it's 
modeled after Novell Netware's security (probably Windows too). I have yet to 
find a limitation in the ability to control user access to network resources.

-Adrian



      

Reply via email to