docs: @Bean(name = "requestAttributeSourceFilter")
      public Filter getRequestAttributeSourceFilter() {
          final RequestAttributeSourceFilter rslt = new RequestAttributeSourceFilter();
          rslt.setAdditionalDescriptors(getRequestAdditionalDescriptors());
          rslt.setUsernameAttribute(REMOTE_USER_ATTRIBUTE); // Looks wrong, but correct
          rslt.setRemoteUserAttribute(REMOTE_USER_ATTRIBUTE);
          rslt.setServerNameAttribute(SERVER_NAME_ATTRIBUTE);
  
          /*
           * The processing position should be set to BOTH for uPortal because the session-scoped bean
           * sessionScopeAdditionalDescriptors gets cleared during /Login processing and request
           * attributes (particularly from HTTP Headers populated by Shibboleth) would be lost.  By
           * executing the filter both before and after, the latter execution will re-add the request
           * attributes to the session-scoped bean. See
           * http://permalink.gmane.org/gmane.comp.java.jasig.uportal/10771 for more information.
           */
          rslt.setProcessingPosition(RequestAttributeSourceFilter.ProcessingPosition.BOTH);
  
          Set<String> userAgent = new HashSet<>();
          userAgent.add(AGENT_DEVICE_ATTRIBUTE);
          Map<String, Set<String>> headerAttributeMapping = new HashMap<>();
          headerAttributeMapping.put(USER_AGENT_KEY, userAgent);
          rslt.setHeaderAttributeMapping(headerAttributeMapping);
  
          return rslt;
      }