Search filter script
John Morrison
john.morrison at uadm.uu.se
Mon May 2 14:20:32 EDT 2016
What I'm really asking, why are the brackets ( ) not being escaped in
the script?
/John
On Mon, 2016-05-02 at 12:41 +0000, John Morrison wrote:
> Hello shibbers,
>
>
>
> I have a scripted search filter built on a multi-value attribute, which
> in turn, searches the ldap in another part of the tree using a separate
> data connector based on the values obtained from the first/default ldap
> search connector.
>
> If the value is single, that works.
>
> But when I get hit by two values, I'm stuffed by the characters ( = \28
> and ) = \29.
>
>
>
> Should work as a search filter as the VALUES:
> [(|(ATTRIBUTE-X=VALUE1)(ATTRIBUTE-X=VALUE2))] come out as this.
>
> But the search filter yields:
>
> LDAP SEARCH Template text ($organisationalSearch.get(0)) yields
>
> (\28|\28ATTRIBUTE-X=VALUE1\29\28ATTRIBUTE-X=VALUE2\29\29)
>
>
> ERROR [net.shibboleth.idp.profile.impl.ResolveAttributes:257] - Profile
> Action ResolveAttributes: Error resolving attributes
> net.shibboleth.idp.attribute.resolver.ResolutionException: Data
> Connector 'myLDAPorganisation': Unable to execute LDAP search
>
>
>
> <![CDATA[
>
> logger =
> Java.type("org.slf4j.LoggerFactory").getLogger("net.shibboleth.idp.attribute.resolver.test");
> if ((employeeType) &&
> (employeeType.getValues().contains("EMPLOYED")) && (ATTRIBUTE-X)) {
> if
> (ATTRIBUTE-X.getValues().size()==1) {
>
> organisationalSearch.getValues().add("ATTRIBUTE-X="+ATTRIBUTE-X.getValues().get(0));
> logger.debug("CASE
> 1"+organisationalSearch.getValues());
> }
> else {
> logger.debug("CASE
> 2"+norEduOrgUnitUniqueIdentifier.getValues());
> searchFilter="(|";
> for (i=0; i <
> norEduOrgUnitUniqueIdentifier.getValues().size(); i++) {
>
> searchFilter=searchFilter
> +"("+("ATTRIBUTE-X="+ATTRIBUTE-X.getValues().get(i))+")";
>
> logger.debug("I="+i+searchFilter);
> }
>
> searchFilter=searchFilter+")";
>
> logger.debug("SEARCH FILTER:" +searchFilter);
>
> organisationalSearch.getValues().add(searchFilter);
> logger.debug("VALUES:
> "+organisationalSearch.getValues());
> }
> }
> else {
>
> organisationalSearch.getValues().add("ATTRIBUTE-X=XXX");
> }
>
> ]]>
> </ad:Script>
>
>
>
> Can someone help with this problem or suggest a better way,
>
> Thanks,
>
> John
>
More information about the users
mailing list