On May 6, 2009, at 11:07 AM, Adrian Crum wrote:

David E Jones wrote:
What I'm leaning towards above would be kind of like the auto-grant stuff if there was one permission for each artifact. The idea is to default to the level of full granularity (each artifact's name being the permission) and then make sure we have tools and conventions to make it easy (and even possible!) to deal with them.

In the design I'm working on, permissions can be granted to any artifact that has a security element. Artifacts that don't have a security element inherit permissions from artifacts higher up in the hierarchy that do have a security element. This eliminates having to name *everything* and instead you just name important security points.

What if a user finds their own "important security points" that we have not already setup? Actually, I would argue that over time with enough use nearly every screen, form, form field, service, and perhaps other things would be designated as security points.

Why not just default to having anything and everything being a potential security point and use tools and conventions to make it easier to handle... but still totally flexible to configure externally (ie without changing the code or configuration files, and without restarting the system).

The security element has an identifier attribute that is used to identify the artifact. I thought it would be simpler to just use the artifact's name, but not all artifacts have names. Then there is the case where an artifact might have a name, but it wouldn't make any sense to an administrator, or it could be better described for an administrator. (One example that Andrew pointed out is the EditExample screen. It is used for creating and editing Examples. So, from a security administration standpoint, CreateOrEditExample would be a better name.) Plus, it would be helpful to format artifact names in an authorization service friendly way.

Is it really worth all the effort to do so? Consider that one of the nice things about using the actual/natural names and locations is that for the most part we have been consistent in naming things so that from the request name (in a URL) you can easily lookup screens and forms and things, although the worst case scenario is that they have to find the actual request in the ArtifactInfo stuff and then trace down to the artifact they are looking for.

In general I am very against assigning additional and artificial names to things... it just creates a level of confusion because people see things referred to by different names and it's hard for experienced people to keep track of which is which and what it's for... for more casual users I suspect it would be a constant problem.

Also, which artifacts don't have any sort of name or identifier (sorry, I can't think of any right now...)?

About EditExample, it could be "CreateOrUpdateExample" but the point of using the word "Edit" was to avoid using the term "Create" or "Update" and not imply that it was exclusive to one or the other.

In the case where a service calls other services, the called services inherit the permissions of the original service call.

Yes, we can certainly have rules like this that help us deal with the large number of artifacts.

-David

Reply via email to