Hi Arnold,
Interesting issue!
Identity management systems basically consider one unique master key for
users. I assume that you can map one of them to another, so I suggest you
to make two function or API (IdnumberToUsername and UsernameToIdnumber) to
resolve the problem.

On Wed, May 16, 2018 at 12:27 AM, Arnold Miller <[email protected]>
wrote:

> Dear Alireza,
> What I mean is that I'm not returning all the fields and that's why it
> fails.
> To make it clearer I give you an example:
> Let's say that in my source (or master) identity store I have both
> "idnumber" and "username", and both are unique. The problem is that when I
> select both of them to be the remote key Syncope says "there must be
> exactly one remote key". This is a problem because some of the destination
> identity stores work with the "idnumber" only whereas others work with the
> "username" only; so if I mark "idnumber" to be the remote key then the
> systems that work only with "username" will not be able to return it
> because they just don't have it; in spite they have the rest of the
> mandatory fields.
>
>
> Best Regards,
>
> Arnold Miller
>
>
> *Sent:* Tuesday, May 15, 2018 at 12:08 AM
> *From:* "alireza ranjbaran" <[email protected]>
>
> *To:* [email protected]
> *Subject:* Re: Getting IllegalStateException when running task
> Dear Arnold,
>
> Would you please explain more details?
> For the error you posted at first, you should be sure that you return all
> "mandatory" fields include __UID__, __NAME__, the key you have defined in
> your mapping, ect. for example if you mapped the Syncope 'username' to DB
> 'uname', you can fill the result as below (here email, organization and
> department are optional):
>
> sql.eachRow("SELECT * FROM Users" + where, {result.add([__UID__:it.uname,
> __NAME__:it.uname, email:it.email, uname:it.uname,
> organization:it.organization, department:it.department])} )
>
> You are not forced to use primary key. Alternate key or even fixed values
> can be pass as result.
>
> On Mon, May 14, 2018 at 9:06 PM, Arnold Miller <[email protected]>
> wrote:
>>
>> Looks like I will need to create another resource and duplicate
>> information (except the previously used remote key).
>> Will be glad to hear if anyone has another solution.
>>
>>
>> Best Regards,
>>
>> Arnold Miller
>>
>>
>> *Sent:* Thursday, May 10, 2018 at 3:04 PM
>> *From:* "Arnold Miller" <[email protected]>
>>
>> *To:* [email protected]
>> *Subject:* Re: Getting IllegalStateException when running task
>> I certainly have an identity store which uses an alternate key instead of
>> the one I marked as a remote key.
>> Specifically, the master identity store has both the remote and the
>> alternate keys, but the identity store where I am trying to push the
>> updates has only the alternate key.
>>
>> If in Syncope "there must be exactly one remote key" how else can I
>> handle this problem?
>>
>>
>> Best Regards,
>>
>> Arnold Miller
>>
>> *Sent:* Thursday, May 10, 2018 at 1:29 AM
>> *From:* "Francesco Chicchiriccò" <[email protected]>
>> *To:* [email protected]
>> *Subject:* Re: Getting IllegalStateException when running task
>> On 09/05/2018 22:49, Arnold Miller wrote:
>>
>> Hi,
>> I'm getting this
>> "java.lang.IllegalStateException: Object {Uid=Attribute: {Name=__UID__,
>> .....
>> was returned by the connector but failed to pass the framework filter.
>> This seems like wrong implementation of the filter in the connector."
>> when the Search script is executed after running a Push task.
>>
>> From a previous message I found that the search script must return all
>> the attributes it is asked for:
>> https://www.mail-archive.com/[email protected]/msg02339.html
>> Which basically means that you fill in all the values in ATTRS_TO_GET
>> [.....]
>> I am doing that and also I am returning the result as suggested in
>> https://github.com/apache/syncope/blob/2_0_X/fit/core-
>> reference/src/test/resources/rest/SearchScript.groovy#L76-L93
>> like this:
>> result.add(buildConnectorObject(node));
>>
>> My questions:
>> 1. Why am I getting that "IllegalStateException" described above?
>>
>>
>> The error above means that your search script is returning something that
>> does not match with the original request: suppose that Syncope asks for a
>> filter like as "name == 'Francesco'" and the result returned from the
>> search script does not have the "name" attribute, or value is "Arnold".
>>
>>
>> 2. If the script is finding the item it is requested to, why does it
>> trigger the creation script instead of the update script?
>>
>>
>> The point is exactly this: because of the exception above, Syncope does
>> not find any item, hence create is invoked.
>>
>> HTH
>> Regards.
>>
>> --
>> Francesco Chicchiriccò
>>
>> Tirasa - Open Source Excellencehttp://www.tirasa.net/
>>
>> Member at The Apache Software Foundation
>> Syncope, Cocoon, Olingo, CXF, OpenJPA, 
>> PonyMailhttp://home.apache.org/~ilgrosso/
>>
>>
>
> --
> *Best Regards,*
> *Alireza Ranjbaran*
> *ITS Security Operations Engineer at **MTN Irancell*
>
>
>
>
>



-- 
*Best Regards,*

*Alireza Ranjbaran*
*ITS Security Operations Engineer at **MTN Irancell*

Reply via email to