code: protected void addRequestAttributes(final HttpServletRequest httpServletRequest, final Map<String, List<Object>> attributes) {
          for (final Map.Entry<String, Set<String>> attributeMapping : requestAttributeMapping.entrySet()) {
              final String attributeName = attributeMapping.getKey();
              final Object value = httpServletRequest.getAttribute(attributeName);
  
              if (value != null) {
                  if (value instanceof String) {
                      for (final String attrName : attributeMapping.getValue()) {
                          attributes.put(attrName, splitOnSemiColonHandlingBackslashEscaping((String) value));
                      }
                  } else {
                      logger.warn("Specified request attribute {} is not a String, is a {} so it is ignored", attributeName,
                              value.getClass());
                  }
              } else {
                  logger.debug("Did not find request attribute {} in the request", attributeName);
              }
          }
      }
docs: Add specified request parameters to the attributes map.  Some Shibboleth (Apache httpd mod-shib) configurations
  use environment variables which get passed by AJP as request attributes rather than HTTP Headers to pass
  attributes from the IDP to the application.  Since the attributes are likely from Shib, we want to do the
  same semicolon splitting behavior as HTTP headers. Shib often passes multi-valued attributes, such as a
  list of user roles.
  @param httpServletRequest Servlet Request
  @param attributes Map of attributes to add additional attributes to from the Http Request
  @since 1.7.1