Thanks Francesco.

You have given me something good to think about over the next few days.

rgds,
Nik
On 30/04/2013 15:46, Nik wrote:
Thanks for clarifying this.

It kinda leaves me stuck though.

I want to have RBAC for my app managed by syncope using REST.

I was assuming the AC part of RBAC is done by "entitlement" assignment (I'm not sure how this is supposed to work for an app using syncope)

The point here is that Syncope implements

- role-based provisioning (e.g. you can decide where to provision users by assigning them roles) - role-based authorization to REST methods (e.g. you can assign entitlements to roles and users assigned to those roles will have entitlements to access REST methods)

e.g. is not (yet!) equipped for general RBAC on external resources (take a look at the roadmap, it's there).

but as you can see from my curl example, I want to create a "role" which allows access control through a resource (ldap) to my app services.

i.e.

Collaborator (role)
  isAuthorized to
    - generate
    - update
    - publish
    - migrate
    - scan
    on appA which is connected by
    resource uforge_ldap

How else can I do this? I thought that entitlement is AuthZ! (yes/no)

Maybe, in syncope, we have to define this functionality as nested roles?

Collaborator (role)
    withChildren (roles)
    - generate
    - update
    - publish
    - migrate
    - scan
    on appA which is connected by
    resource uforge_ldap

Please help me with my confusion here, if you see what I'm trying to achieve (i'm sure this is due to my ignorance of IDM terminology)

IMO there it is not straightforward to implement your requirements in a general fashion since any solution will heavily depend on how the external resource interpret such "resource entitlements".

You could, for example, define a role enum multivalue schema named 'ResourceEntitlement' with possible values

    - generate
    - update
    - publish
    - migrate
    - scan
    - ...

then assign some values from this set to the 'ResourceEntitlement' attribute of 'Collaborator' role.

Supposing to provide a decent mapping on the resource, and supposing that ResourceEntitlement values are correctly propagated to the external resource, as said above the biggest problem I see here is how to make the external resource change its behavior depending on such values.

In my experience I have solved such problems by integrating Apache Syncope with an access manager likes as CAS, Apache Shiro or even OpenAM.

Good luck :-)

On 30/04/2013 14:00, Nik wrote:
Hi,

I'm trying to find a way to create/delete/update my own entitlement names not those found in content.xml.

of course the addition of my own entitlements fails (because, I'm guessing, consistency checking with those entitlements
pre-defined in the content.xml, looking at the source code).

Is there a way to create/delete/update those available in content.xmlby the syncope REST api?

Hi Nik,
entitlements are not meant to be extended: their primary purpose is to define security constraints on RESTful methods.

Some more information: https://cwiki.apache.org/confluence/display/SYNCOPE/Authentication+and+authorization

Regards.


Reply via email to