Uploaded image for project: 'Grouper'
  1. Grouper
  2. GRP-2235

PSPNG userSearchFilter with subhect attribute fails

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • Minor
    • None
    • 2.4.0
    • provisioning
    • None
    • Running on Docker: tier/grouper:2.4.0-a64-u38-w6-p6-20190625-rc1

    Description

      We found an issue with the PSPNG when trying to use a subject attribute to build the userSearchFilter. It appears that a GrouperSession isn't running/available when the JEXL expression is evaluated causing the subject.getAttributeValue method to fail.

      Config:

      changeLog.consumer.pspng_activedirectory.userSearchFilter = sAMAccountName=${subject.getAttributeValue("umbcprimaryaccountuid", false)}

      Exception:

      grouper-ui;grouper_error.log;;;2019-06-26 16:26:39,687: [TSUserFetcher-pspng_activedirectory-full-1] TRACE Provisioner.evaluateJexlExpression(664) - - Evaluating UserSearchFilter Jexl expression: sAMAccountName=${subject.getAttributeValue("umbcprimaryaccountuid", false)}
      grouper-ui;grouper_error.log;;;2019-06-26 16:26:39,698: [TSUserFetcher-pspng_activedirectory-full-1] ERROR Provisioner.evaluateJexlExpression(746) - - Jexl Expression UserSearchFilter 'sAMAccountName=${subject.getAttributeValue("umbcprimaryaccountuid", false)}' could not be evaluated for subject ''LG77083'/'person'/'ldap'/null' and group 'null/null' which used variableMap '{userSearchBaseDn=ou=umbcUsers,DC=ad,DC=umbc,DC=edu, provisionerType=LdapGroupProvisioner, groupCreationBaseDn=CN=Grouper,DC=ad,DC=umbc,DC=edu, utils=edu.internet2.middleware.grouper.pspng.PspJexlUtils@42dbb42e, subject='LG77083'/'person'/'ldap', provisionerName=pspng_activedirectory, groupSearchBaseDn=CN=Grouper,DC=ad,DC=umbc,DC=edu}'
      java.lang.RuntimeException: Error substituting string: '${subject.getAttributeValue("umbcprimaryaccountuid", false)}'
      at edu.internet2.middleware.grouper.util.GrouperUtil.substituteExpressionLanguage(GrouperUtil.java:9483)
      at edu.internet2.middleware.grouper.pspng.Provisioner.evaluateJexlExpression(Provisioner.java:702)
      at edu.internet2.middleware.grouper.pspng.LdapProvisioner.getUserLdapFilter(LdapProvisioner.java:283)
      at edu.internet2.middleware.grouper.pspng.LdapProvisioner.fetchTargetSystemUsers(LdapProvisioner.java:211)
      at edu.internet2.middleware.grouper.pspng.Provisioner$2.call(Provisioner.java:847)
      at edu.internet2.middleware.grouper.pspng.Provisioner$2.call(Provisioner.java:841)
      at java.util.concurrent.FutureTask.run(FutureTask.java:266)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
      at java.lang.Thread.run(Thread.java:748)
      Caused by: org.apache.commons.jexl2.JexlException: edu.internet2.middleware.grouper.util.GrouperUtil.substituteExpressionLanguage@9428![8,57]: 'subject.getAttributeValue('umbcprimaryaccountuid', false);' method invocation error
      at org.apache.commons.jexl2.Interpreter.call(Interpreter.java:1076)
      at org.apache.commons.jexl2.Interpreter.visit(Interpreter.java:1100)
      at org.apache.commons.jexl2.parser.ASTMethodNode.jjtAccept(ASTMethodNode.java:18)
      at org.apache.commons.jexl2.Interpreter.visit(Interpreter.java:1317)
      at org.apache.commons.jexl2.parser.ASTReference.jjtAccept(ASTReference.java:18)
      at org.apache.commons.jexl2.Interpreter.interpret(Interpreter.java:232)
      at org.apache.commons.jexl2.ExpressionImpl.evaluate(ExpressionImpl.java:65)
      at edu.internet2.middleware.grouper.util.GrouperUtil.substituteExpressionLanguage(GrouperUtil.java:9434)
      ... 9 more
      Caused by: java.lang.IllegalStateException: There is no open GrouperSession detected. Make sure to start a grouper session (e.g. GrouperSession.startRootSession() if you want to use a root session ) before calling this method
      at edu.internet2.middleware.grouper.GrouperSession.staticGrouperSession(GrouperSession.java:1150)
      at edu.internet2.middleware.grouper.GrouperSession.staticGrouperSession(GrouperSession.java:1098)
      at edu.internet2.middleware.grouper.subj.SourcesXmlResolver.find(SourcesXmlResolver.java:316)
      at edu.internet2.middleware.grouper.subj.CachingResolver.find(CachingResolver.java:143)
      at edu.internet2.middleware.grouper.subj.ValidatingResolver.find(ValidatingResolver.java:105)
      at edu.internet2.middleware.grouper.SubjectFinder.findByIdAndSource(SubjectFinder.java:504)
      at edu.internet2.middleware.grouper.subj.LazySubject.getSubject(LazySubject.java:215)
      at edu.internet2.middleware.grouper.subj.LazySubject.getAttributeValue(LazySubject.java:314)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:498)
      at org.apache.commons.jexl2.internal.MethodExecutor.execute(MethodExecutor.java:64)
      at org.apache.commons.jexl2.internal.AbstractExecutor$Method.invoke(AbstractExecutor.java:327)
      at org.apache.commons.jexl2.Interpreter.call(Interpreter.java:1068)
      ... 16 more

      Attachments

        Activity

          People

            bert.beelindgren@at.internet2.edu Bert Bee-Lindgren (gatech.edu)
            john.gasper@at.internet2.edu John Gasper (unicon.net)
            Chris Hyzer (upenn.edu)
            Votes:
            2 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: