Adrian,

Thank you very much for your comments. Minor point, you misread what I said. I said "NOT ONCE have I had the masochistic urge to work on something which did not already have some sort of design"... meaning everything has had some sort of design even if its some sticky notes on my wall, or a drawing on the whiteboard describing a ContentMapFacade, or a full blown document like I put together in this case. Also, it is my experience that a prototype of some sort is often a good way to prove the concept and something I am often asked to provide.

While I have nothing against working as in a community, hell isn't that why OFBiz is here? This is my way of working with the community, what you will see are proposals and prototypes like what you have right now. I have NEVER implied that my designs or implementations were ever superior, however I don't see any other proposals on the table right now. If was trying to avoid discussing and collaborating, you would hear nothing about it from me except for a some commits and more than half the applications would be finished already...

Now that everyone has expressed themselves, I think we can move on to business. What we have in front of us today is a proposal and prototype of a new security enhancement which is really based several things. We have an API which can be implemented for various different methods of authorization. The design was careful to not require anything specific to the internal security functionality. I do plan to implement a Crowd version of this as well, which would end up being a hybrid LDAP via Crowd/OFBiz combination. A pure LDAP implementation can be developed as well, which is one thing I was certain you would be interested in.

The designs are really very similar to those we discussed 2 years ago when the PermissionService stuff was implemented. For some reason however I let others influence my decision at that time and let it go. There was some discussion about more granular permissions for forums and I would personally like to implement much more granular permissions in Project Manager and SFA applications. Which is were this entire effort branched from.

I find it frustrating that authorization is handled in so many different places and looking at it now, to me it looks like a total mess. I will want to customize the access control for the applications we use internally, no I need to. I don't want to patch or extend service definitions b/c that makes upgrading all that much more complicated. Finally, I want one single API which I can use throughout the system to check permission.

I wrote a security prototype using JSecurity and Hibernate to get a feel for some other tools. Even considered integrating JSecurity into OFBiz. However, the major limitation to that API is that all permissions are loaded for a user when they authenticate. So, if we were to write custom logic to handle very granular permissions we could end up with millions or billions of permissions loaded into memory. This didn't seem scalable.

I spent about a week writing down thoughts about what an ideal authorization scheme would look like. I compared that to what we have and came up with the designs that were posted last Friday.

Last weekend, a received a few comments regarding the designs posted in Confluence and on Monday when I heard nothing more decided to start working on implementing the API. Only took a few hours, but after another day or so of testing I was then able to check it in for comments.

The main points in this design is that is brings about a new permission format which provides a simple way to create very granular permissions. This is actually the main draw, the whole API is based around the permission format. Next, the pains in keeping up with <has- permission>, <permission-service> the various different things which need to be called. The PermissionService implementation never became the "center". It was always still tied with the Security object, so now I think its time to address it completely and really centralize authorization.

Now that there is proposal and a prototype, I would like to know if there are any requirements I did not account for. Like the findMatchingPermissions() idea was fantastic, and that is now part of the API and document. Let's review what we have and see what can make it better, but let's do it quickly...

Andrew

p.s. The one thing I don't care about is the fact that this is big and will require a lot of work, one of the reasons I am trying to move quickly on this is so that *I* have enough time to complete it. I'm not expecting everyone to jump in and help, and I don't want to leave it half done.


On May 2, 2009, at 12:35 AM, Adrian Crum wrote:


Understood.

I remember sitting next to you at the developer's conference, and watching you work. I experienced firsthand your "masochistic urge to work on something which did not already have some sort of design." I asked you for help, and you gave me links that pointed me right to the answer. I really appreciated that. I admire you and I respect you. Please understand that.

Before I got involved with OFBiz I worked as an independent programmer - I didn't have to answer to anyone. I could do my own thing. Like you, I had the "masochistic urge to work on something which did not already have some sort of design." I didn't consult with anyone - I just came up with a design and wrote the code for it.

Working with the OFBiz community has taught me the value of community. It has changed my ways. I started off with suggesting my "superior designs" (that I emailed to David, and I am embarrassed to read today) and they were critiqued, in a stern yet polite way. Yet I accepted those critiques. In the years that followed, David and I would disagree about many things, but I never ignored his advice or his opinions - I would always consider them carefully.

So that's all I'm suggesting now. Please understand that you are respected for who you are - one of the founders of the project. Please understand that you are respected for your talent. But also, please understand that we are a community.

I want to help with this effort. There is nothing that would satisfy me more than all of us working together on the refactoring of OFBiz security. All I ask is that we back off for a little while and let the community offer their comments, suggestions, and recommendations - even if it means discarding "superior designs." Together, we can take those comments, suggestions, and recommendations, and use them to redesign OFBiz security in a way that will meet the needs of the community and impress the world at large.

-Adrian

Reply via email to