We have updated our privacy idea to 3.8.1 and since then doing any CURL commands (Other than authenticating an administrator) is failing.
Web UI works fine, but trying to do the same in a curl command is failing.
Here are the commands I’m running (And I’m sure I’m just doing it wrong, but this was working previously).
Authenticate:
curl -X POST https://privacyidea.domain.com/auth -H 'Content-Type: application/json' -d '{"username": "user.name@administrators", "password": "password", "realm": "administrators"}'
This returns an Authorization Token, which I then use to get a list of tokens using (I have also tried to using PI-Authorization header as I’ve seen that in places as well):
curl -X GET https://privacyidea.domain.com/token/?user=another.user&tokenrealm=userrealm -H 'Content-Type: application/json' -H 'Authorization: TOKEN_HERE'
The error I get back is:
{"detail":null,"id":1,"jsonrpc":"2.0","result":{"error":{"code":-500,"message":"500 Internal Server Error: The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application."},"status":false},"time":1683854770.0018148,"version":"privacyIDEA 3.8.1"}
And in my privacy idea logs I see some strack traces.
Exception on /token/ [GET]
Traceback (most recent call last):
File "/usr/local/venvs/privacyidea/lib64/python3.6/site-packages/werkzeug/wrappers/json.py", line 119, in get_json
rv = self.json_module.loads(data)
File "/usr/local/venvs/privacyidea/lib64/python3.6/site-packages/flask/json/__init__.py", line 253, in loads
return _json.loads(s, **kwargs)
File "/usr/lib64/python3.6/json/__init__.py", line 367, in loads
return cls(**kw).decode(s)
File "/usr/lib64/python3.6/json/decoder.py", line 339, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib64/python3.6/json/decoder.py", line 357, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/venvs/privacyidea/lib64/python3.6/site-packages/flask/app.py", line 2447, in wsgi_app
response = self.full_dispatch_request()
File "/usr/local/venvs/privacyidea/lib64/python3.6/site-packages/flask/app.py", line 1953, in full_dispatch_request
return self.finalize_request(rv)
File "/usr/local/venvs/privacyidea/lib64/python3.6/site-packages/flask/app.py", line 1970, in finalize_request
response = self.process_response(response)
File "/usr/local/venvs/privacyidea/lib64/python3.6/site-packages/flask/app.py", line 2267, in process_response
response = handler(response)
File "/usr/local/venvs/privacyidea/lib64/python3.6/site-packages/privacyidea/api/lib/postpolicy.py", line 136, in policy_wrapper
return self.function(self.request, response, **kwds)
File "/usr/local/venvs/privacyidea/lib64/python3.6/site-packages/privacyidea/api/lib/postpolicy.py", line 172, in sign_response
request.all_data = get_all_params(request)
File "/usr/local/venvs/privacyidea/lib64/python3.6/site-packages/privacyidea/api/lib/utils.py", line 295, in get_all_params
return_param.update(request.json)
File "/usr/local/venvs/privacyidea/lib64/python3.6/site-packages/werkzeug/local.py", line 347, in __getattr__
return getattr(self._get_current_object(), name)
File "/usr/local/venvs/privacyidea/lib64/python3.6/site-packages/werkzeug/wrappers/json.py", line 69, in json
return self.get_json()
File "/usr/local/venvs/privacyidea/lib64/python3.6/site-packages/werkzeug/wrappers/json.py", line 128, in get_json
rv = self.on_json_loading_failed(e)
File "/usr/local/venvs/privacyidea/lib64/python3.6/site-packages/flask/wrappers.py", line 27, in on_json_loading_failed
raise BadRequest()
werkzeug.exceptions.BadRequest: 400 Bad Request: The browser (or proxy) sent a request that this server could not understand.
Request finalizing failed with an error while handling an error
Traceback (most recent call last):
File "/usr/local/venvs/privacyidea/lib64/python3.6/site-packages/werkzeug/wrappers/json.py", line 119, in get_json
rv = self.json_module.loads(data)
File "/usr/local/venvs/privacyidea/lib64/python3.6/site-packages/flask/json/__init__.py", line 253, in loads
return _json.loads(s, **kwargs)
File "/usr/lib64/python3.6/json/__init__.py", line 367, in loads
return cls(**kw).decode(s)
File "/usr/lib64/python3.6/json/decoder.py", line 339, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib64/python3.6/json/decoder.py", line 357, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/venvs/privacyidea/lib64/python3.6/site-packages/flask/app.py", line 1970, in finalize_request
response = self.process_response(response)
File "/usr/local/venvs/privacyidea/lib64/python3.6/site-packages/flask/app.py", line 2267, in process_response
response = handler(response)
File "/usr/local/venvs/privacyidea/lib64/python3.6/site-packages/privacyidea/api/lib/postpolicy.py", line 136, in policy_wrapper
return self.function(self.request, response, **kwds)
File "/usr/local/venvs/privacyidea/lib64/python3.6/site-packages/privacyidea/api/lib/postpolicy.py", line 172, in sign_response
request.all_data = get_all_params(request)
File "/usr/local/venvs/privacyidea/lib64/python3.6/site-packages/privacyidea/api/lib/utils.py", line 295, in get_all_params
return_param.update(request.json)
File "/usr/local/venvs/privacyidea/lib64/python3.6/site-packages/werkzeug/local.py", line 347, in __getattr__
return getattr(self._get_current_object(), name)
File "/usr/local/venvs/privacyidea/lib64/python3.6/site-packages/werkzeug/wrappers/json.py", line 69, in json
return self.get_json()
File "/usr/local/venvs/privacyidea/lib64/python3.6/site-packages/werkzeug/wrappers/json.py", line 128, in get_json
rv = self.on_json_loading_failed(e)
File "/usr/local/venvs/privacyidea/lib64/python3.6/site-packages/flask/wrappers.py", line 27, in on_json_loading_failed
raise BadRequest()
werkzeug.exceptions.BadRequest: 400 Bad Request: The browser (or proxy) sent a request that this server could not understand.
Has anyone come across this before? Or am I simply passing the wrong values around?