<div><div dir="auto">Because the condition is on the SAML2 encoder, you’ll need to use —saml2 on aacli. (And, of course, you’ll want it eventually on your single-valued attribute.)</div></div><div dir="auto"><br></div><div dir="auto">Greg</div><div><br><div class="gmail_quote"><div>On Fri, Jun 22, 2018 at 9:58 PM Baron Fujimoto <<a href="mailto:baron@hawaii.edu">baron@hawaii.edu</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">This looks promising, but apparently I'm missing something.<br>
<br>
I've defined the the predicat in file named activation-condition-predicates.xml based on the the example from the ActivationConditions doc like so:<br>
<br>
<bean id="singleValueMailSPs" parent="shibboleth.Conditions.RelyingPartyId"><br>
<constructor-arg name="candidates"><br>
<list><br>
<value><a href="https://sp.example.com/shibboleth" rel="noreferrer" target="_blank">https://sp.example.com/shibboleth</a></value><br>
<value><a href="https://arcggis" rel="noreferrer" target="_blank">https://arcggis</a></value><br>
</list><br>
</constructor-arg><br>
</bean><br>
<br>
I've used the list version to support potential future expansion.<br>
<br>
I reference this from my services.xml by adding it to the AttributeResolverResources:<br>
(I believe this the the recommended method based on the docs)<br>
<br>
<util:list id ="shibboleth.AttributeResolverResources"><br>
<value>%{idp.home}/conf/attribute-resolver.xml</value><br>
<value>%{idp.home}/conf/activation-condition-predicates.xml</value><br>
</util:list><br>
<br>
It appears to load ok:<br>
<br>
INFO [net.shibboleth.ext.spring.util.SchemaTypeAwareXMLBeanDefinitionReader:317] - Loading XML bean definitions from file [/home/shib/idp/conf/activation-condition-predicates.xml]<br>
<br>
I have a test relying party entry which defines the relyingPartyId:<br>
<br>
<RelyingParty id="<a href="https://arcgis" rel="noreferrer" target="_blank">https://arcgis</a>"<br>
provider="<a href="https://idp.hawaii.edu/idp/shibboleth" rel="noreferrer" target="_blank">https://idp.hawaii.edu/idp/shibboleth</a>"<br>
defaultSigningCredentialRef="IdPCredential"><br>
<ProfileConfiguration xsi:type="saml:SAML2SSOProfile" encryptAssertions="never" encryptNameIds="never" /><br>
</RelyingParty><br>
<br>
An attribute definition based on your example:<br>
(to release the mail attribute as "arcgis_mail")<br>
<br>
<resolver:AttributeDefinition xsi:type="ad:Simple"<br>
id="mail" sourceAttributeID="mail"><br>
<resolver:Dependency ref="UH_LDAP" /><br>
<resolver:AttributeEncoder xsi:type="enc:SAML1String" name="urn:mace:dir:attribute-def:mail" /><br>
<resolver:AttributeEncoder xsi:type="enc:SAML2String" name="urn:oid:0.9.2342.19200300.100.1.3" /><br>
<resolver:AttributeEncoder xsi:type="enc:SAML2String" activationConditionRef="singleValueMailSPs" name="arcgis_mail" /><br>
<br>
A test attribute filter policy:<br>
<br>
<afp:AttributeFilterPolicy id="ArcGIS"><br>
<afp:PolicyRequirementRule xsi:type="afp:Requester"<br>
value="<a href="https://arcgis" rel="noreferrer" target="_blank">https://arcgis</a>" /><br>
<afp:AttributeRule attributeID="mail"><br>
<afp:PermitValueRule xsi:type="afp:ANY" /><br>
</afp:AttributeRule><br>
<afp:AttributeRule attributeID="givenName"><br>
<afp:PermitValueRule xsi:type="afp:ANY" /><br>
</afp:AttributeRule><br>
</afp:AttributeFilterPolicy><br>
<br>
But when I try a resolver test, it appears to release the attribute as "mail" and not "arcgis_mail"?<br>
<br>
$ curl -k '<a href="https://idp/idp/profile/admin/resolvertest?requester=https://arcgis&principal=baron" rel="noreferrer" target="_blank">https://idp/idp/profile/admin/resolvertest?requester=https://arcgis&principal=baron</a>'<br>
<br>
{<br>
"requester": "<a href="https://arcgis" rel="noreferrer" target="_blank">https://arcgis</a>",<br>
"principal": "baron",<br>
"attributes": [<br>
<br>
<br>
{<br>
"name": "mail",<br>
"values": [<br>
"StringAttributeValue{value=<a href="mailto:baron@hawaii.edu" target="_blank">baron@hawaii.edu</a>}" ]<br>
},<br>
<br>
{<br>
"name": "givenName",<br>
"values": [<br>
"StringAttributeValue{value=Baron}" ]<br>
}<br>
<br>
]<br>
}<br>
<br>
I don't see any indication in the logs that it's invoking the singleValueMailSPs predicate<br>
or references to arcgis_mail.<br>
<br>
On Mon, Jun 18, 2018 at 02:50:26PM -0700, Greg Haverkamp wrote:<br>
>><br>
>> is there a way to remap a defined attribute's name (id) in an attribute<br>
>> filter policy, or conditionally specify its source attribute in an<br>
>> attribute definition based on the requesting entityID in the attribute<br>
>> resolver? How can we release our single-valued uhEmail attribute to this<br>
>> SP as 'mail' without disrupting our existing definition or release of<br>
>> 'mail' for other SPs already in use? What's the recommended way to handle<br>
>> this?<br>
><br>
><br>
>I haven't decided if it's better or worse, but I've lately started using<br>
>activation conditions for these requests. (Historically, I just created<br>
>new attributes.)<br>
><br>
><a href="https://wiki.shibboleth.net/confluence/display/IDP30/ActivationConditions" rel="noreferrer" target="_blank">https://wiki.shibboleth.net/confluence/display/IDP30/ActivationConditions</a><br>
><br>
>We just go ahead and release by ID, so the poorly implemented SP's get our<br>
>other attributes, too. I gather you could script that out in an Attribute<br>
>Filter Policy if you wanted, but that seems pretty messy.<br>
><br>
>But in our email case:<br>
> <resolver:AttributeDefinition xmlns="urn:mace:shibboleth:2.0:resolver:ad"<br>
>id="email" xsi:type="Simple" sourceAttributeID="mail"><br>
> <resolver:Dependency ref="myLDAP"/><br>
> <resolver:AttributeEncoder<br>
>xmlns="urn:mace:shibboleth:2.0:attribute:encoder" xsi:type="SAML1String"<br>
>name="urn:mace:dir:attribute-def:mail"/><br>
> <resolver:AttributeEncoder<br>
>xmlns="urn:mace:shibboleth:2.0:attribute:encoder" xsi:type="SAML2String"<br>
>name="urn:oid:0.9.2342.19200300.100.1.3" friendlyName="mail"/><br>
> <resolver:AttributeEncoder<br>
>xmlns="urn:mace:shibboleth:2.0:attribute:encoder" xsi:type="SAML2String"<br>
>name="email_address" friendlyName="email_address"<br>
>activationConditionRef="CventComPredicate"/><br>
> </resolver:AttributeDefinition><br>
><br>
>Cvent just gets urn:oid:0.9.2342.19200300.100.1.3 and email_address (and a<br>
>handful of others I grumbled about for a bit. Cvent was one of the more<br>
>frustrating integrations I've done in a while.)<br>
><br>
>Greg<br>
><br>
><br>
><br>
>On Mon, Jun 18, 2018 at 2:26 PM Baron Fujimoto <<a href="mailto:baron@hawaii.edu" target="_blank">baron@hawaii.edu</a>> wrote:<br>
><br>
>> We are working with an SP (ArcGIS) who in unable to properly handle 'mail'<br>
>> as a potentially multivalued attibute. Normally we would offer an<br>
>> alternate attribute we have defined with id=uhEmail which we guarantee to<br>
>> to be single-valued and encode with the same OID as the sandard mail<br>
>> attribute where this is an issue. However, this SP also insists that this<br>
>> attribute they require be named 'mail'.<br>
>><br>
>> Is there a way to remap a defined attribute's name (id) in an attribute<br>
>> filter policy, or conditionally specify its source attribute in an<br>
>> attribute definition based on the requesting entityID in the attribute<br>
>> resolver? How can we release our single-valued uhEmail attribute to this<br>
>> SP as 'mail' without disrupting our existing definition or release of<br>
>> 'mail' for other SPs already in use? What's the recommended way to handle<br>
>> this?<br>
<br>
-- <br>
Baron Fujimoto <<a href="mailto:baron@hawaii.edu" target="_blank">baron@hawaii.edu</a>> :: UH Information Technology Services<br>
minutas cantorum, minutas balorum, minutas carboratum desendus pantorum<br>
-- <br>
For Consortium Member technical support, see <a href="https://wiki.shibboleth.net/confluence/x/coFAAg" rel="noreferrer" target="_blank">https://wiki.shibboleth.net/confluence/x/coFAAg</a><br>
To unsubscribe from this list send an email to <a href="mailto:users-unsubscribe@shibboleth.net" target="_blank">users-unsubscribe@shibboleth.net</a><br>
</blockquote></div></div>