DOI-BLM/requests-arcgis-auth

"ValueError: too many values to unpack" if any query string parameter value has the '=' char (ArcGISPortalSAMLAuth)

Closed this issue · 0 comments

The ArcGISPortalSAMLAuth handler parses the query string and removes any existing 'token=value' matches by splitting on the '=' char. If an equals character is in the value of the parameter a ValueError exception will be thrown.

Sample Code (the 'where=1=1' is causing the issue).

s = requests.session()
s.auth = ArcGISPortalSAMLAuth(client_id)
response = s.get(r'https://org.maps.arcgis.com/sharing/rest/portals/self?f=json')
response2 = s.get(r'https://fqdn/arcgis/rest/services/svc/MapServer/0/query?f=json&where=1=1&outFields=*')

Traceback (most recent call last):
File "", line 1, in
File "c:\tmp_PYTHON\virtual_envs\blmpydev2\Lib\site-packages\requests\sessions.py", line 501, in get
return self.request('GET', url, **kwargs)
File "c:\tmp_PYTHON\virtual_envs\blmpydev2\Lib\site-packages\requests\sessions.py", line 474, in request
prep = self.prepare_request(req)
File "c:\tmp_PYTHON\virtual_envs\blmpydev2\Lib\site-packages\requests\sessions.py", line 407, in prepare_request
hooks=merge_hooks(request.hooks, self.hooks),
File "c:\tmp_PYTHON\virtual_envs\blmpydev2\Lib\site-packages\requests\models.py", line 306, in prepare
self.prepare_auth(auth, url)
File "c:\tmp_PYTHON\virtual_envs\blmpydev2\Lib\site-packages\requests\models.py", line 543, in prepare_auth
r = auth(self)
File "C:\tmp\git\repos\ArcGISServerTokenAuth\requests_arcgis_auth\arcgis_saml_auth.py", line 92, in call
return self._add_token_to_request(prepared_request)
File "C:\tmp\git\repos\ArcGISServerTokenAuth\requests_arcgis_auth\arcgis_saml_auth.py", line 293, in _add_token_to_request
k,v = p.split("=")
ValueError: too many values to unpack