Hi Salim,
see my replies embedded below.

Regards.

On 07/08/2013 13:36, Salim Boulkour wrote:
Hi everyone,

I'm currently taking a look at the inner data model of Syncope, and what we can do with it.

S
​ o far I understood the way to extend user attributes, the difference between plain/derived/virtual attributes, resources mappings, Syncope entitlements, password policies etc.

​
W
​ hen it comes to roles, there are few questions I couldn't answer to while reading the wiki :

  * What is the purpose of the role tree ? Is it only as a tidy
    presentation purpose ? Or is there a feature behing like scoping
    admin rights on sub-parts of the roles set ?


A role can inherit some aspects from its parent role, if checked:
 * owner
 * attributes
 * derived attributes
 * virtual attributes
 * password policy
 * account policy

  * Can we create role inclusions ? Like giving role A to a user, also
    gives the user roles S and T ?


No: if you want to accomplish this, you'd probably need (depending on your scenario) to provide some custom action to be attached to the workflow definition. You can do this

  * Can we specify parameters or some kind of attribute to a role in
    order to specialized it ?
      o As an example can I have a unique "Buyer" role, with a
        parameters that sets his max $amount and another that sets his
        geographic area ?


Roles can have attributes (normal, derived and virtual) as users, so you can define any kind of role schema and then provide values for such attributes. Referring to your example above, I would define a couple of role schema (see how to do this via the admin console [1]):
 1. amount (Double)
2. geoArea (Enum, with enumeration values for all area you would like to manage)

      o Then I would like to have actions based on those parameters :
          + geographic areas may have differents ADs/LDAP so I'd like
            to provision different resources regarding the geographic
            parameter
          + max $amount would also be useful to give different
            entitlements in the resource (LDAP groups for example)


In order to implement such custom logic you would likely need to have your own SyncActions class [2].

  * Are the owner fields of a role attached to Syncope entitlements in
    a way ? The owners can update/delete the role ?


Of course: see [3].

  * I couldn't test that case as Syncope crashes when my owner tries
    to read the role (see attached file "/*Alert:*//**Error while
    contacting Syncope core/"). Error in logs :

*org.apache.catalina.core.StandardWrapperValve* invoke SEVERE: Servlet.service() for servlet [syncope-core-rest] in context with path [/syncope] threw exception [Request processing failed; nested exception is *org.apache.syncope.core.rest.controller.UnauthorizedRoleException*: Missing entitlement for role(s) [1]] with root causeorg.apache.syncope.core.rest.controller.UnauthorizedRoleException: *Missing entitlement for role(s) [1]*


The current authorization model (which is going to change completely in next release 1.2.0) requires different entitlements for an user (except for admin) to access certain sections of the admin console.

So, for an user U configured as owner of role R, you will need to grant U with (at least) POLICY_LIST and USER_READ entitlements. This can be accomplished by giving such entitlements to one of roles assigned to U: in the simplest form, you can just give such two entitlements to role R and assign R to U (besides ownership). At this point, as reported in [3], U will be able to administer R.

Let me stress that this entitlement assignment is only required for the admin console, not for plain role administration via REST access: this because the admin console performs multiple REST calls when constructing the role form.

[1] https://cwiki.apache.org/confluence/display/SYNCOPE/Schema
[2] https://cwiki.apache.org/confluence/display/SYNCOPE/SyncActionsClass
[3] https://cwiki.apache.org/confluence/display/SYNCOPE/Authentication+and+authorization#Authenticationandauthorization-Roleownership

--
Francesco Chicchiriccò

ASF Member, Apache Syncope PMC chair, Apache Cocoon PMC Member
http://people.apache.org/~ilgrosso/

Reply via email to