code: def prepare_request(settings):
      
  
      # Set the ACS url and binding method
      settings["sp"]["assertionConsumerService"] = {
          "url": web.ctx.homedomain + web.ctx.homepath + "/auth/callback/" + settings["id"],
          "binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
      }
  
      # If server is behind proxys or balancers use the HTTP_X_FORWARDED fields
      data = web.input()
      return {
          'https': 'on' if web.ctx.protocol == 'https' else 'off',
          'http_host': web.ctx.environ["SERVER_NAME"],
          'server_port': web.ctx.environ["SERVER_PORT"],
          'script_name': web.ctx.homepath,
          'get_data': data.copy(),
          'post_data': data.copy(),
          # Uncomment if using ADFS as IdP, https://github.com/onelogin/python-saml/pull/144
          # 'lowercase_urlencoding': True,
          'query_string': web.ctx.query
      }
docs: Prepare SAML request