CURL not working since upgrading to 3.8.1

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?

I think I’ve figured it out… I need to use PI-Authorization, and I need to remove Content-Type: application/json