Help with MappedAttributeDefinition

Mohamed Lrhazi lrhazi at cua.edu
Fri Aug 19 19:34:31 UTC 2022


Thanks for the tip David! Will do.



On Fri, Aug 19, 2022 at 3:14 PM IAM David Bantz <dabantz at alaska.edu> wrote:

> If there is any possibility of eduPersonAffiliation being ‘empty’ you
> should probably make the loop conditional on it’s existence, e.g.,
>
> if (typeof eduPersonAffiliationv != "undefined" && eduPersonAffiliation !=
> null && eduPersonAffiliation().size() !=0)
>>
> David St Pierre Bantz
> U Alaska
>
> On 19Aug2022 at 09:18:49, Mohamed Lrhazi via users <users at shibboleth.net>
> wrote:
>
>> Thanks a lot Keith. The scripting you suggested seems to have worked well:
>>
>>
>> <AttributeDefinition id="isEligible" xsi:type="ScriptedAttribute">
>> <InputDataConnector ref="sqliteConnector" attributeNames="
>> eduPersonAffiliation"/>
>> <Script><![CDATA[
>> logger =
>> Java.type("org.slf4j.LoggerFactory").getLogger("net.shibboleth.idp.attribute.resolver.eppnbuilder");
>> result=0;
>> for(i = 0; i < eduPersonAffiliation.getValues().size(); i++) {
>> value = eduPersonAffiliation.getValues().get(i);
>> // logger.info("isEligible: eduPersonAffiliation: " + value);
>> if (value=='student') {
>> result=1
>> }
>> }
>> isEligible.getValues().add(result.toString());
>> ]]>
>> </Script>
>> <AttributeEncoder xsi:type="SAML1String" name="isEligible" encodeType="
>> false" />
>> <AttributeEncoder xsi:type="SAML2String" name="isEligible" friendlyName="
>> isEligible" encodeType="false" />
>> </AttributeDefinition>
>>
>>
>>
>> On Thu, Aug 18, 2022 at 9:58 PM Wessel, Keith <kwessel at illinois.edu>
>> wrote:
>>
>>> The problem is your map is evaluating every value of
>>> eduPersonAffiliation. Any chance you could do what you’re hoping with
>>> something single-valued like eduPersonPrimaryAffiliation?
>>>
>>>
>>>
>>> Shy of that, I think your best bet is a script. Set the attribute to 0
>>> at the beginning. Then iterate over all values of eduPersonAffiliation in a
>>> for loop. If you find “student”, change that variable to 1. Should be a
>>> pretty simple script.
>>>
>>>
>>>
>>> Keith
>>>
>>>
>>>
>>>
>>>
>>> *From:* users <users-bounces at shibboleth.net> *On Behalf Of *Mohamed
>>> Lrhazi via users
>>> *Sent:* Thursday, August 18, 2022 6:26 PM
>>> *To:* Shib Users <users at shibboleth.net>
>>> *Cc:* Mohamed Lrhazi <lrhazi at cua.edu>
>>> *Subject:* Help with MappedAttributeDefinition
>>>
>>>
>>>
>>> Hello,
>>>
>>>
>>>
>>> I am trying to add an attribute that resolves to "1" if the user is a
>>> student, but "0" otherwise... I thought it would be as simple as below....
>>> but this actually returns "1" and "0" if the user is both a student and
>>> also a member or any other affiliation....
>>>
>>>
>>>
>>> How do I implement this logic?
>>>
>>>
>>>
>>> Thanks a lot!
>>>
>>> Mohamed.
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>     <AttributeDefinition *id*="isEligible" *xsi**:**type*="Mapped">
>>>
>>>         <InputDataConnector *ref*="sqliteConnector" *attributeNames*="
>>> eduPersonAffiliation"/>
>>>
>>>         <DefaultValue>0</DefaultValue>
>>>
>>>         <ValueMap>
>>>
>>>             <ReturnValue>1</ReturnValue>
>>>
>>>             <SourceValue>student</SourceValue>
>>>
>>>        </ValueMap>
>>>
>>>        <AttributeEncoder *xsi**:**type*="SAML1String" *name*="isEligible
>>> " *encodeType*="false" />
>>>
>>>        <AttributeEncoder *xsi**:**type*="SAML2String" *name*="isEligible
>>> " *friendlyName*="isEligible" *encodeType*="false" />
>>>
>>>     </AttributeDefinition>
>>>
>> --
>> For Consortium Member technical support, see
>> https://shibboleth.atlassian.net/wiki/x/ZYEpPw
>> To unsubscribe from this list send an email to
>> users-unsubscribe at shibboleth.net
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://shibboleth.net/pipermail/users/attachments/20220819/0476517c/attachment.htm>


More information about the users mailing list