[midPoint] Modification of role hierarchy not working

iam-mailing at tk.de iam-mailing at tk.de
Tue Oct 15 09:39:07 CEST 2019


Hi there,

this seems to be a problem in our system, too.

I tried a few combinations with enforcement options an legalization:
As comparison I tried direct and indirect assignments. The 'Resurce-Role' creates a shadow in the resource
The 'User' has an assignment to the 'Root-Role'.

Enforcement

Legalization

Operation

Action

Shadow action

Expectation

relative

false

add

Root-Role => Resource-Role (inducement) + User reconcile

created and linked

ok

relative

false

remove

Root-Role => Resource-Role (inducement) + User reconcile

stays linked

should be removed

relative

false

add

User => Resource-Role (assignment)

created and linked

ok

relative

false

remove

User => Resource-Role (assignment)

deleted

ok

relative

true

add

Root-Role => Resource-Role (inducement) + User reconcile

created and linked

ok

relative

true

remove

Root-Role => Resource-Role (inducement) + User reconcile

stays linked because new Construction Assignment is created

should be removed

relative

true

add

User => Resource-Role (assignment)

created and linked

ok

relative

true

remove

User => Resource-Role (assignment)

deleted

ok

full

false

add

Root-Role => Resource-Role (inducement) + User reconcile

created and linked

ok

full

false

remove

Root-Role => Resource-Role (inducement) + User reconcile

deleted

ok

full

false

add

User => Resource-Role (assignment)

created and linked

ok

full

false

remove

User => Resource-Role (assignment)

deleted

ok

full

true

add

Root-Role => Resource-Role (inducement) + User reconcile

created and linked

ok

full

true

remove

Root-Role => Resource-Role (inducement) + User reconcile

stays linked because new Construction Assignment is created

should be removed

full

true

add

User => Resource-Role (assignment)

created and linked

ok

full

true

remove

User => Resource-Role (assignment)

deleted

ok


This seems to be a bug in the system…

Regards,
Henrik


Von: Arnošt Starosta - AMI Praha a.s. <arnost.starosta at ami.cz<mailto:arnost.starosta at ami.cz>>
Date: Di., 1. Okt. 2019, 11:04
Subject: Re: [midPoint] Modification of role hierarchy not working
To: midPoint General Discussion <midpoint at lists.evolveum.com<mailto:midpoint at lists.evolveum.com>>

Hi Tom,

as for the not-deleted-projection i believe you need to configure your projection policy and also check your schemaHandling/existence if changed.

see https://wiki.evolveum.com/display/midPoint/Projection+Policy

arnost

po 30. 9. 2019 v 17:52 odesílatel Tom Miller <tommillermp at gmail.com<mailto:tommillermp at gmail.com>> napsal:
Hi everyone!

Has anyone tried to modify an existing role yet?
It seems like changes in the role hierarchy are not distributed to the resources correctly after Recomputation.


1) The scenario starts like this:

  *   The user 'Testuser' has an assignment to the empty 'Root-Role'.
2) In the second step, I edit the role 'Root-Role':

  *   The 'Resource-Role' has an account construction inducement for a resource (e.g. dummy CSV).
  *   The 'Root-Role' has an inducement to the 'Resource-Role'.
Because of MidPoint's eventual consistency, I start a Recomputation of all 'Root-Role' members.

A projection for the resource is created for the 'Testuser'. So far so good.

3) In the third step, I edit the role 'Root-Role' again:

  *   The inducement to 'Resource-Role' is removed from the 'Root-Role'.
To regain consistency, I start a Recomputation of all 'Root-Role' members again.

Nothing happens.
The user 'Testuser' still has his projection for the resource (which should be deleted).
Only one thing happened: The <roleMembershipRef> to 'Resource-Role' was removed during Recomputation.


The same bahaviour happened as I tried these variations:

  *   Deactivating the inducement ('Root-Role' -> 'Resource-Role') instead of deleting it
  *   Reconciling the user 'Testuser' instead of starting the Recomputation of all members of role 'Root-Role'
  *   Use different <strength> values for the construction inducement in the 'Resource-Role'

Sidenote: The system behaves in the same (wrong?) way, when I replace the construction inducement with a group projection.
In this case, the user should already have an account in the resource.

Interestingly, this operation still work:

  *   If I directly assign the 'Resource-Role' to the 'Testuser', the projection is created correctly.
  *   If I remove the direct assignment of 'Resource-Role' from the 'Testuser', the projection is deleted correctly.

Sidenote: The Enforcement Options of the resources are set to the default value ('relative' with no legalization).
This should create accounts after assignment and delete accounts after unassignment.
Other accounts in the resource should not be touched.
The other Enforcement Options and the Legalization are not useful in my scenario (I don't want all unassigned accounts to be whiped from the resource).


The problem seems to be, that the Reconcile/Recompute job doesn't know, that there had ever been an indirect assignment to the 'Resource-Role'.
Instead, the job behaves like the projetion was created manually for the user.
Because of this, there seems to be nothing to recompute for MidPoint.


I tried to analyze this behavior in a primary hook and found something interesting:
When a role is assigned/unassigned directly to a user, this is visible in the <assignment> section and there is a delta with this change.
When a role is assigned/unassigned indirectly to a user, this is visible in the <roleMembershipRef> section, but there is no delta at all.
I assume, this causes the different treatment of direct and indirect assignments.

If indirect assignments (<roleMembershipRef>) would be treated like direct assignments (<assignment>), then everything would propably work as expected.
Changes made to the role hierarchy would cause an effect during Reconcile/Recompute, because the <roleMembershipRef> are already added and removed correctly right now.


Is there any recommended way, how to make changes to the role hierarchy?

Are there any configurations with which MidPoint can process indirect assignments EXACTLY like direct assignments?

Is there any setting or configuration with which MidPoint can process the changes made to indirect assignments when recomputing?

Can I trigger the reconcilation of a role member with some kind of delta (e.g. 'remove indirect assignment')?


The configuration for my problem looks like this:

<role oid="11111111-9ac3-4c09-8bb1-c151bd8cd128">
    <name>Resource-Role</name>
    <inducement>
        <construction>
            <strength>strong</strength>
            <resourceRef oid="33333333-9d55-4bf6-8fd3-d9c7a6f0bd03" relation="org:default" type="c:ResourceType">
                <!-- CSV-System -->
            </resourceRef>
            <kind>account</kind>
            <intent>default</intent>
        </construction>
    </inducement>
</role>

<role oid="22222222-afa2-4a2e-9d3e-c7e8738c673d">
    <name>Root-Role</name>
    <inducement>
        <targetRef oid="11111111-9ac3-4c09-8bb1-c151bd8cd128" relation="org:default" type="c:RoleType">
            <!-- Resource-Role -->
        </targetRef>
    </inducement>
</role>

<user oid="00000000-d56b-4c7d-baf7-61c98afa8851">
    <name>Testuser</name>
    <assignment>
        <targetRef oid="22222222-afa2-4a2e-9d3e-c7e8738c673d" relation="org:default" type="c:RoleType">
            <!-- Root-Role -->
        </targetRef>
    </assignment>
</user>


I hope anyone can help me...
Thanks in advance!
_______________________________________________
midPoint mailing list
midPoint at lists.evolveum.com<mailto:midPoint at lists.evolveum.com>
http://lists.evolveum.com/mailman/listinfo/midpoint


--

Arnošt Starosta
solution architect

gsm: [+420] 603 794 932
e‑mail: arnost.starosta at ami.cz<mailto:arnost.starosta at ami.cz>

AMI Praha a.s.
Pláničkova 11, 162 00 Praha 6

tel.: [+420] 274 783 239 | web: www.ami.cz<https://www.ami.cz>

[Das Bild wurde vom Absender entfernt. AMI Praha a.s.]

Textem tohoto e‑mailu podepisující neslibuje uzavřít ani neuzavírá za společnost AMI Praha a.s.
jakoukoliv smlouvu. Každá smlouva, pokud bude uzavřena, musí mít výhradně písemnou formu.

Tento e‑mail je určen výhradně pro potřeby jeho adresáta/ů a může obsahovat důvěrné nebo osobní
informace. Nejste‑li zamýšleným příjemcem, je zakázáno jakékoliv zveřejňování, zprostředkování
nebo jiné použití těchto informací. Pokud jste obdrželi e‑mail neoprávněně, informujte o tom prosím
odesílatele a vymažte neprodleně všechny kopie tohoto e‑mailu včetně všech jeho příloh. Nakládáním
s neoprávněně získanými informacemi se vystavujete riziku právního postihu.
_______________________________________________
midPoint mailing list
midPoint at lists.evolveum.com<mailto:midPoint at lists.evolveum.com>
http://lists.evolveum.com/mailman/listinfo/midpoint
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.evolveum.com/pipermail/midpoint/attachments/20191015/c34bab71/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ~WRD000.jpg
Type: image/jpeg
Size: 823 bytes
Desc: ~WRD000.jpg
URL: <https://lists.evolveum.com/pipermail/midpoint/attachments/20191015/c34bab71/attachment.jpg>


More information about the midPoint mailing list