[midPoint] Mapping to specific ObjectClass

Jiri Brom bromjiri at gmail.com
Wed Nov 23 17:27:19 CET 2016


Hi again,

Finally it seems working.
The mistake I did was that I was assigning the Resource directly to the
Service using Assignment. But now I tried adding the Resource as Inducement
to a Role and there I placed the mentioned <kind> and <intent> together
with the requested <attribute> from schemaHandling. Then I assigned the
Role to the Service and it works.

<inducement id="1">
      <construction>
         <resourceRef oid="9488ffd0-0c22-4863-af4f-c3a4fd64d509"
type="c:ResourceType"><!-- freeipa --></resourceRef>
         <kind>entitlement</kind>
         <intent>Service</intent>
         <attribute>
            <c:ref>icfs:name</c:ref>
            <outbound>
               <source>
                  <c:path>name</c:path>
               </source>
            </outbound>
         </attribute>
      </construction>
   </inducement>

Thank you for your help :)

J.

Jiří Brom

e-mail: bromjiri at gmail.com
CZ: +420723860707
AT: +436607144324

On Wed, Nov 23, 2016 at 4:15 PM, Jiri Brom <bromjiri at gmail.com> wrote:

> Hi Gustav,
>
> thanks but I tried this and Service attributes still keep mapping to
> UserClass instead of ServiceClass.
>
> <schemaHandling>
>       <objectType>
>          <kind>entitlement</kind>
>          <intent>Service</intent>
>          <displayName>Service</displayName>
>          <default>false</default>
>          <objectClass>ri:ServiceClass</objectClass>
>          <attribute>
>             <c:ref>icfs:name</c:ref>
>             <tolerant>true</tolerant>
>             <exclusiveStrong>false</exclusiveStrong>
>             <outbound>
>                <authoritative>true</authoritative>
>                <exclusive>false</exclusive>
>                <strength>normal</strength>
>                <source>
>                   <c:path>name</c:path>
>                </source>
>             </outbound>
>          </attribute>
>       </objectType>
>       <objectType>
>          <kind>account</kind>
>          <intent>default</intent>
>          <displayName>User</displayName>
>          <default>true</default>
>          <objectClass>ri:UserClass</objectClass>
>          <attribute>
>             <c:ref>icfs:name</c:ref>
>             <tolerant>true</tolerant>
>             <exclusiveStrong>false</exclusiveStrong>
>             <outbound>
>                <authoritative>true</authoritative>
>                <exclusive>false</exclusive>
>                <strength>normal</strength>
>                <source>
>                   <c:path>name</c:path>
>                </source>
>             </outbound>
>          </attribute>
>       </objectType>
>    </schemaHandling>
>
>
> Do you know what else could be a problem?
>
> Thank you,
>
> Jiri
>
> Jiří Brom
>
> e-mail: bromjiri at gmail.com
> CZ: +420723860707
> AT: +436607144324
>
> On Wed, Nov 23, 2016 at 3:44 PM, Pálos Gustáv <gustav.palos at evolveum.com>
> wrote:
>
>> sorry for my fault, in XML you see it as:
>>
>> <kind>account</kind>
>> <intent>default</intent>
>>
>> and services under *Entitlement*
>>
>> <kind>*entitlement*</kind>
>> <intent>Service</intent>
>>
>> Best regards,
>>
>> Gustav
>>
>> 2016-11-23 15:15 GMT+01:00 Pálos Gustáv <gustav.palos at evolveum.com>:
>>
>>> Hi,
>>>
>>> please see other connectors, for examle:
>>> https://github.com/Evolveum/connector-drupal/blob/master/src
>>> /main/java/com/evolveum/polygon/connector/drupal/DrupalConnector.java
>>>
>>> public Uid create(ObjectClass objectClass, Set<Attribute> attributes,
>>> OperationOptions operationOptions) {
>>> if (objectClass.is(ObjectClass.ACCOUNT_NAME)) {    // __ACCOUNT__
>>>     return createOrUpdateUser(null, attributes);
>>> } else {
>>> // other object classes...
>>>
>>> but you need
>>> <kind>account</kind>
>>> <kind>service</kind>
>>>
>>> and not to use <intent> for this...
>>>
>>> Best regards,
>>>
>>> Gustav
>>>
>>>
>>> 2016-11-23 15:00 GMT+01:00 Jiri Brom <bromjiri at gmail.com>:
>>>
>>>> Hi all,
>>>>
>>>> I want to write a connector which will work with attributes of midPoint
>>>> Users and Services. In my CreateOP I need to do something like the
>>>> following pseudocode:
>>>>
>>>> Uid create(oc, attr, oo) {
>>>>     if (attr.name from User){
>>>>         doCreateUser(attr.name);
>>>>     }
>>>>     else{
>>>>         doCreateService(attr.name);
>>>>     }
>>>> }
>>>>
>>>>
>>>> The problem is that I can't distinguish between attribute __name__ of
>>>> User and Service. They both have the same name so I can't call the proper
>>>> function. Is there a way to distinguish them using only one connector? (I
>>>> know I can do it easily by implementing two connectors)
>>>>
>>>> I tried to solve it using two ObjectClasses but I can't figure out how
>>>> to setup SchemaHandler so User maps to UserClass and Service maps to
>>>> ServiceClass. They both map to the one which I set as default.
>>>>
>>>> <schemaHandling>
>>>>       <objectType>
>>>>          <kind>account</kind>
>>>>          <intent>Service</intent>
>>>>          <displayName>Service</displayName>
>>>>          <default>false</default>
>>>>          <objectClass>ri:ServiceClass</objectClass>
>>>>          <attribute>
>>>>             <c:ref>icfs:name</c:ref>
>>>>             <tolerant>true</tolerant>
>>>>             <exclusiveStrong>false</exclusiveStrong>
>>>>             <outbound>
>>>>                <authoritative>true</authoritative>
>>>>                <exclusive>false</exclusive>
>>>>                <strength>normal</strength>
>>>>                <source>
>>>>                   <c:path>name</c:path>      ###*(here I need it to
>>>> map icfs:name of Service)*
>>>>                </source>
>>>>             </outbound>
>>>>          </attribute>
>>>>       </objectType>
>>>>       <objectType>
>>>>          <kind>account</kind>
>>>>          <intent>User</intent>
>>>>          <displayName>User</displayName>
>>>>          <default>true</default>
>>>>          <objectClass>ri:UserClass</objectClass>
>>>>          <attribute>
>>>>             <c:ref>icfs:name</c:ref>
>>>>             <tolerant>true</tolerant>
>>>>             <exclusiveStrong>false</exclusiveStrong>
>>>>             <outbound>
>>>>                <authoritative>true</authoritative>
>>>>                <exclusive>false</exclusive>
>>>>                <strength>normal</strength>
>>>>                <source>
>>>>                   <c:path>name</c:path>      ###*(here I need it to
>>>> map icfs:name of User)*
>>>>                </source>
>>>>             </outbound>
>>>>          </attribute>
>>>>       </objectType>
>>>>    </schemaHandling>
>>>>
>>>>
>>>> Thank you for your answers,
>>>>
>>>> Jiri
>>>>
>>>> Jiří Brom
>>>>
>>>> e-mail: bromjiri at gmail.com
>>>> CZ: +420723860707
>>>> AT: +436607144324
>>>>
>>>> _______________________________________________
>>>> midPoint mailing list
>>>> midPoint at lists.evolveum.com
>>>> http://lists.evolveum.com/mailman/listinfo/midpoint
>>>>
>>>>
>>>
>>>
>>> --
>>> Gustáv Pálos
>>> Identity Engineer
>>> evolveum.com
>>>
>>
>>
>>
>> --
>> Gustáv Pálos
>> Identity Engineer
>> evolveum.com
>>
>> _______________________________________________
>> midPoint mailing list
>> 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/20161123/54ddc289/attachment.htm>


More information about the midPoint mailing list