← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 2111836] [NEW] Creating a token using an application credential results in a HTTP 500 when attempting to use said token

 

Public bug reported:

Sample devstack reproducer:

```
export OS_CLOUD=devstack-admin
openstack server list  # works
openstack application credential create foo

# use the returned id and secret fields to create a new cloud entry

export OS_CLOUD=devstack-admin-appcred
openstack server list  # works
openstack token issue -f value -c id

# use the returned id field to create a new cloud entry

export OS_CLOUD=devstack-admin-token
openstack server list  # error!
```

Samples `clouds.yaml` after the above steps:

```
clouds:
    devstack-admin:
        auth:
            auth_url: http://10.0.110.96/identity
            password: password
            project_domain_id: default
            project_name: admin
            user_domain_id: default
            username: admin
        region_name: RegionOne
    devstack-admin-appcred:
        auth:
            auth_url: http://10.0.110.96/identity
            application_credential_id: af1d2e8c0838425f8459bb07ba3371a7
            application_credential_secret: G9ATNVJsZW63kX34tHddudA13c0N77ktP5OSrPe-n-BEeHuF7AqQeXu6bSIaK593dC72bzQYjzG7M-ypNseZYA
        auth_type: v3applicationcredential
        region_name: RegionOne
    devstack-admin-token:
        auth:
            auth_url: http://10.0.110.96/identity
            token: gAAAAABoNejg1AvoyDKLwM6--SR4X8zEx2U_Q5w89QiOV45FiVGV3Hhf9Y4TDJoNYjiMmSOCUrFTKyHIY0hiNyyiSVXNer0nMa_ivlOpR6n2Rag7vZDdCLUjfri5fOmlGd3G0kOSic5qBf3ubhZPF2IDLQ65D4RbCzQS7yGmlrJBOEcpcLwyYhJTx_y74WO9N93duPAhGthZ
        auth_type: v3token
        region_name: RegionOne
```

The traceback:

```
CRITICAL keystone [None req-cdc8e19b-cb35-4b8b-8aea-4c34409871ed admin admin] Unhandled error: KeyError: 'application_credential'
ERROR keystone Traceback (most recent call last):
ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/flask/app.py", line 1536, in __call__
ERROR keystone     return self.wsgi_app(environ, start_response)
ERROR keystone            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/werkzeug/middleware/proxy_fix.py", line 183, in __call__
ERROR keystone     return self.app(environ, start_response)
ERROR keystone            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/webob/dec.py", line 129, in __call__
ERROR keystone     resp = self.call_func(req, *args, **kw)
ERROR keystone            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/webob/dec.py", line 193, in call_func
ERROR keystone     return self.func(req, *args, **kwargs)
ERROR keystone            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/oslo_middleware/base.py", line 124, in __call__
ERROR keystone     response = req.get_response(self.application)
ERROR keystone                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/webob/request.py", line 1313, in send
ERROR keystone     status, headers, app_iter = self.call_application(
ERROR keystone                                 ^^^^^^^^^^^^^^^^^^^^^^
ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/webob/request.py", line 1278, in call_application
ERROR keystone     app_iter = application(self.environ, start_response)
ERROR keystone                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/webob/dec.py", line 143, in __call__
ERROR keystone     return resp(environ, start_response)
ERROR keystone            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/webob/dec.py", line 129, in __call__
ERROR keystone     resp = self.call_func(req, *args, **kw)
ERROR keystone            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/webob/dec.py", line 193, in call_func
ERROR keystone     return self.func(req, *args, **kwargs)
ERROR keystone            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/oslo_middleware/base.py", line 124, in __call__
ERROR keystone     response = req.get_response(self.application)
ERROR keystone                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/webob/request.py", line 1313, in send
ERROR keystone     status, headers, app_iter = self.call_application(
ERROR keystone                                 ^^^^^^^^^^^^^^^^^^^^^^
ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/webob/request.py", line 1278, in call_application
ERROR keystone     app_iter = application(self.environ, start_response)
ERROR keystone                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/webob/dec.py", line 129, in __call__
ERROR keystone     resp = self.call_func(req, *args, **kw)
ERROR keystone            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/webob/dec.py", line 193, in call_func
ERROR keystone     return self.func(req, *args, **kwargs)
ERROR keystone            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/osprofiler/web.py", line 111, in __call__
ERROR keystone     return request.get_response(self.application)
ERROR keystone            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/webob/request.py", line 1313, in send
ERROR keystone     status, headers, app_iter = self.call_application(
ERROR keystone                                 ^^^^^^^^^^^^^^^^^^^^^^
ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/webob/request.py", line 1278, in call_application
ERROR keystone     app_iter = application(self.environ, start_response)
ERROR keystone                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/webob/dec.py", line 193, in call_func
ERROR keystone     return self.func(req, *args, **kwargs)
ERROR keystone            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/oslo_middleware/request_id.py", line 58, in __call__
ERROR keystone     response = req.get_response(self.application)
ERROR keystone                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/webob/request.py", line 1313, in send
ERROR keystone     status, headers, app_iter = self.call_application(
ERROR keystone                                 ^^^^^^^^^^^^^^^^^^^^^^
ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/webob/request.py", line 1278, in call_application
ERROR keystone     app_iter = application(self.environ, start_response)
ERROR keystone                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ERROR keystone   File "/opt/stack/keystone/keystone/server/flask/request_processing/middleware/url_normalize.py", line 38, in __call__
ERROR keystone     return self.app(environ, start_response)
ERROR keystone            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/webob/dec.py", line 129, in __call__
ERROR keystone     resp = self.call_func(req, *args, **kw)
ERROR keystone            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/webob/dec.py", line 193, in call_func
ERROR keystone     return self.func(req, *args, **kwargs)
ERROR keystone            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/keystonemiddleware/auth_token/__init__.py", line 340, in __call__
ERROR keystone     response = req.get_response(self._app)
ERROR keystone                ^^^^^^^^^^^^^^^^^^^^^^^^^^^
ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/webob/request.py", line 1313, in send
ERROR keystone     status, headers, app_iter = self.call_application(
ERROR keystone                                 ^^^^^^^^^^^^^^^^^^^^^^
ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/webob/request.py", line 1278, in call_application
ERROR keystone     app_iter = application(self.environ, start_response)
ERROR keystone                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/werkzeug/middleware/dispatcher.py", line 81, in __call__
ERROR keystone     return app(environ, start_response)
ERROR keystone            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/flask/app.py", line 1514, in wsgi_app
ERROR keystone     response = self.handle_exception(e)
ERROR keystone                ^^^^^^^^^^^^^^^^^^^^^^^^
ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/flask_restful/__init__.py", line 298, in error_router
ERROR keystone     return original_handler(e)
ERROR keystone            ^^^^^^^^^^^^^^^^^^^
ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/flask_restful/__init__.py", line 298, in error_router
ERROR keystone     return original_handler(e)
ERROR keystone            ^^^^^^^^^^^^^^^^^^^
ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/flask_restful/__init__.py", line 298, in error_router
ERROR keystone     return original_handler(e)
ERROR keystone            ^^^^^^^^^^^^^^^^^^^
ERROR keystone   [Previous line repeated 28 more times]
ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/flask_restful/__init__.py", line 295, in error_router
ERROR keystone     return self.handle_error(e)
ERROR keystone            ^^^^^^^^^^^^^^^^^^^^
ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/flask_restful/__init__.py", line 310, in handle_error
ERROR keystone     _handle_flask_propagate_exceptions_config(current_app, e)
ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/flask/app.py", line 1511, in wsgi_app
ERROR keystone     response = self.full_dispatch_request()
ERROR keystone                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/flask/app.py", line 919, in full_dispatch_request
ERROR keystone     rv = self.handle_user_exception(e)
ERROR keystone          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/flask_restful/__init__.py", line 298, in error_router
ERROR keystone     return original_handler(e)
ERROR keystone            ^^^^^^^^^^^^^^^^^^^
ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/flask_restful/__init__.py", line 298, in error_router
ERROR keystone     return original_handler(e)
ERROR keystone            ^^^^^^^^^^^^^^^^^^^
ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/flask_restful/__init__.py", line 298, in error_router
ERROR keystone     return original_handler(e)
ERROR keystone            ^^^^^^^^^^^^^^^^^^^
ERROR keystone   [Previous line repeated 28 more times]
ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/flask_restful/__init__.py", line 295, in error_router
ERROR keystone     return self.handle_error(e)
ERROR keystone            ^^^^^^^^^^^^^^^^^^^^
ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/flask_restful/__init__.py", line 310, in handle_error
ERROR keystone     _handle_flask_propagate_exceptions_config(current_app, e)
ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/flask/app.py", line 917, in full_dispatch_request
ERROR keystone     rv = self.dispatch_request()
ERROR keystone          ^^^^^^^^^^^^^^^^^^^^^^^
ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/flask/app.py", line 902, in dispatch_request
ERROR keystone     return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
ERROR keystone            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/flask_restful/__init__.py", line 489, in wrapper
ERROR keystone     resp = resource(*args, **kwargs)
ERROR keystone            ^^^^^^^^^^^^^^^^^^^^^^^^^
ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/flask/views.py", line 110, in view
ERROR keystone     return current_app.ensure_sync(self.dispatch_request)(**kwargs)  # type: ignore[no-any-return]
ERROR keystone            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/flask_restful/__init__.py", line 604, in dispatch_request
ERROR keystone     resp = meth(*args, **kwargs)
ERROR keystone            ^^^^^^^^^^^^^^^^^^^^^
ERROR keystone   File "/opt/stack/keystone/keystone/server/flask/common.py", line 1159, in wrapper
ERROR keystone     return f(*args, **kwargs)
ERROR keystone            ^^^^^^^^^^^^^^^^^^
ERROR keystone   File "/opt/stack/keystone/keystone/api/auth.py", line 328, in post
ERROR keystone     token = authentication.authenticate_for_token(auth_data)
ERROR keystone             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ERROR keystone   File "/opt/stack/keystone/keystone/api/_shared/authentication.py", line 229, in authenticate_for_token
ERROR keystone     app_cred_id = token_auth['application_credential']['id']
ERROR keystone                   ~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
ERROR keystone KeyError: 'application_credential'
```

** Affects: keystone
     Importance: Undecided
         Status: New

** Summary changed:

- Creating a token using an application credential results in a HTTP 500 when attemtping to use said token
+ Creating a token using an application credential results in a HTTP 500 when attempting to use said token

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Identity (keystone).
https://bugs.launchpad.net/bugs/2111836

Title:
  Creating a token using an application credential results in a HTTP 500
  when attempting to use said token

Status in OpenStack Identity (keystone):
  New

Bug description:
  Sample devstack reproducer:

  ```
  export OS_CLOUD=devstack-admin
  openstack server list  # works
  openstack application credential create foo

  # use the returned id and secret fields to create a new cloud entry

  export OS_CLOUD=devstack-admin-appcred
  openstack server list  # works
  openstack token issue -f value -c id

  # use the returned id field to create a new cloud entry

  export OS_CLOUD=devstack-admin-token
  openstack server list  # error!
  ```

  Samples `clouds.yaml` after the above steps:

  ```
  clouds:
      devstack-admin:
          auth:
              auth_url: http://10.0.110.96/identity
              password: password
              project_domain_id: default
              project_name: admin
              user_domain_id: default
              username: admin
          region_name: RegionOne
      devstack-admin-appcred:
          auth:
              auth_url: http://10.0.110.96/identity
              application_credential_id: af1d2e8c0838425f8459bb07ba3371a7
              application_credential_secret: G9ATNVJsZW63kX34tHddudA13c0N77ktP5OSrPe-n-BEeHuF7AqQeXu6bSIaK593dC72bzQYjzG7M-ypNseZYA
          auth_type: v3applicationcredential
          region_name: RegionOne
      devstack-admin-token:
          auth:
              auth_url: http://10.0.110.96/identity
              token: gAAAAABoNejg1AvoyDKLwM6--SR4X8zEx2U_Q5w89QiOV45FiVGV3Hhf9Y4TDJoNYjiMmSOCUrFTKyHIY0hiNyyiSVXNer0nMa_ivlOpR6n2Rag7vZDdCLUjfri5fOmlGd3G0kOSic5qBf3ubhZPF2IDLQ65D4RbCzQS7yGmlrJBOEcpcLwyYhJTx_y74WO9N93duPAhGthZ
          auth_type: v3token
          region_name: RegionOne
  ```

  The traceback:

  ```
  CRITICAL keystone [None req-cdc8e19b-cb35-4b8b-8aea-4c34409871ed admin admin] Unhandled error: KeyError: 'application_credential'
  ERROR keystone Traceback (most recent call last):
  ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/flask/app.py", line 1536, in __call__
  ERROR keystone     return self.wsgi_app(environ, start_response)
  ERROR keystone            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/werkzeug/middleware/proxy_fix.py", line 183, in __call__
  ERROR keystone     return self.app(environ, start_response)
  ERROR keystone            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/webob/dec.py", line 129, in __call__
  ERROR keystone     resp = self.call_func(req, *args, **kw)
  ERROR keystone            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/webob/dec.py", line 193, in call_func
  ERROR keystone     return self.func(req, *args, **kwargs)
  ERROR keystone            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/oslo_middleware/base.py", line 124, in __call__
  ERROR keystone     response = req.get_response(self.application)
  ERROR keystone                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/webob/request.py", line 1313, in send
  ERROR keystone     status, headers, app_iter = self.call_application(
  ERROR keystone                                 ^^^^^^^^^^^^^^^^^^^^^^
  ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/webob/request.py", line 1278, in call_application
  ERROR keystone     app_iter = application(self.environ, start_response)
  ERROR keystone                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/webob/dec.py", line 143, in __call__
  ERROR keystone     return resp(environ, start_response)
  ERROR keystone            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/webob/dec.py", line 129, in __call__
  ERROR keystone     resp = self.call_func(req, *args, **kw)
  ERROR keystone            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/webob/dec.py", line 193, in call_func
  ERROR keystone     return self.func(req, *args, **kwargs)
  ERROR keystone            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/oslo_middleware/base.py", line 124, in __call__
  ERROR keystone     response = req.get_response(self.application)
  ERROR keystone                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/webob/request.py", line 1313, in send
  ERROR keystone     status, headers, app_iter = self.call_application(
  ERROR keystone                                 ^^^^^^^^^^^^^^^^^^^^^^
  ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/webob/request.py", line 1278, in call_application
  ERROR keystone     app_iter = application(self.environ, start_response)
  ERROR keystone                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/webob/dec.py", line 129, in __call__
  ERROR keystone     resp = self.call_func(req, *args, **kw)
  ERROR keystone            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/webob/dec.py", line 193, in call_func
  ERROR keystone     return self.func(req, *args, **kwargs)
  ERROR keystone            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/osprofiler/web.py", line 111, in __call__
  ERROR keystone     return request.get_response(self.application)
  ERROR keystone            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/webob/request.py", line 1313, in send
  ERROR keystone     status, headers, app_iter = self.call_application(
  ERROR keystone                                 ^^^^^^^^^^^^^^^^^^^^^^
  ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/webob/request.py", line 1278, in call_application
  ERROR keystone     app_iter = application(self.environ, start_response)
  ERROR keystone                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/webob/dec.py", line 193, in call_func
  ERROR keystone     return self.func(req, *args, **kwargs)
  ERROR keystone            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/oslo_middleware/request_id.py", line 58, in __call__
  ERROR keystone     response = req.get_response(self.application)
  ERROR keystone                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/webob/request.py", line 1313, in send
  ERROR keystone     status, headers, app_iter = self.call_application(
  ERROR keystone                                 ^^^^^^^^^^^^^^^^^^^^^^
  ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/webob/request.py", line 1278, in call_application
  ERROR keystone     app_iter = application(self.environ, start_response)
  ERROR keystone                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  ERROR keystone   File "/opt/stack/keystone/keystone/server/flask/request_processing/middleware/url_normalize.py", line 38, in __call__
  ERROR keystone     return self.app(environ, start_response)
  ERROR keystone            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/webob/dec.py", line 129, in __call__
  ERROR keystone     resp = self.call_func(req, *args, **kw)
  ERROR keystone            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/webob/dec.py", line 193, in call_func
  ERROR keystone     return self.func(req, *args, **kwargs)
  ERROR keystone            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/keystonemiddleware/auth_token/__init__.py", line 340, in __call__
  ERROR keystone     response = req.get_response(self._app)
  ERROR keystone                ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/webob/request.py", line 1313, in send
  ERROR keystone     status, headers, app_iter = self.call_application(
  ERROR keystone                                 ^^^^^^^^^^^^^^^^^^^^^^
  ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/webob/request.py", line 1278, in call_application
  ERROR keystone     app_iter = application(self.environ, start_response)
  ERROR keystone                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/werkzeug/middleware/dispatcher.py", line 81, in __call__
  ERROR keystone     return app(environ, start_response)
  ERROR keystone            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/flask/app.py", line 1514, in wsgi_app
  ERROR keystone     response = self.handle_exception(e)
  ERROR keystone                ^^^^^^^^^^^^^^^^^^^^^^^^
  ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/flask_restful/__init__.py", line 298, in error_router
  ERROR keystone     return original_handler(e)
  ERROR keystone            ^^^^^^^^^^^^^^^^^^^
  ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/flask_restful/__init__.py", line 298, in error_router
  ERROR keystone     return original_handler(e)
  ERROR keystone            ^^^^^^^^^^^^^^^^^^^
  ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/flask_restful/__init__.py", line 298, in error_router
  ERROR keystone     return original_handler(e)
  ERROR keystone            ^^^^^^^^^^^^^^^^^^^
  ERROR keystone   [Previous line repeated 28 more times]
  ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/flask_restful/__init__.py", line 295, in error_router
  ERROR keystone     return self.handle_error(e)
  ERROR keystone            ^^^^^^^^^^^^^^^^^^^^
  ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/flask_restful/__init__.py", line 310, in handle_error
  ERROR keystone     _handle_flask_propagate_exceptions_config(current_app, e)
  ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/flask/app.py", line 1511, in wsgi_app
  ERROR keystone     response = self.full_dispatch_request()
  ERROR keystone                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/flask/app.py", line 919, in full_dispatch_request
  ERROR keystone     rv = self.handle_user_exception(e)
  ERROR keystone          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/flask_restful/__init__.py", line 298, in error_router
  ERROR keystone     return original_handler(e)
  ERROR keystone            ^^^^^^^^^^^^^^^^^^^
  ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/flask_restful/__init__.py", line 298, in error_router
  ERROR keystone     return original_handler(e)
  ERROR keystone            ^^^^^^^^^^^^^^^^^^^
  ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/flask_restful/__init__.py", line 298, in error_router
  ERROR keystone     return original_handler(e)
  ERROR keystone            ^^^^^^^^^^^^^^^^^^^
  ERROR keystone   [Previous line repeated 28 more times]
  ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/flask_restful/__init__.py", line 295, in error_router
  ERROR keystone     return self.handle_error(e)
  ERROR keystone            ^^^^^^^^^^^^^^^^^^^^
  ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/flask_restful/__init__.py", line 310, in handle_error
  ERROR keystone     _handle_flask_propagate_exceptions_config(current_app, e)
  ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/flask/app.py", line 917, in full_dispatch_request
  ERROR keystone     rv = self.dispatch_request()
  ERROR keystone          ^^^^^^^^^^^^^^^^^^^^^^^
  ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/flask/app.py", line 902, in dispatch_request
  ERROR keystone     return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
  ERROR keystone            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/flask_restful/__init__.py", line 489, in wrapper
  ERROR keystone     resp = resource(*args, **kwargs)
  ERROR keystone            ^^^^^^^^^^^^^^^^^^^^^^^^^
  ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/flask/views.py", line 110, in view
  ERROR keystone     return current_app.ensure_sync(self.dispatch_request)(**kwargs)  # type: ignore[no-any-return]
  ERROR keystone            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  ERROR keystone   File "/opt/stack/data/venv/lib/python3.12/site-packages/flask_restful/__init__.py", line 604, in dispatch_request
  ERROR keystone     resp = meth(*args, **kwargs)
  ERROR keystone            ^^^^^^^^^^^^^^^^^^^^^
  ERROR keystone   File "/opt/stack/keystone/keystone/server/flask/common.py", line 1159, in wrapper
  ERROR keystone     return f(*args, **kwargs)
  ERROR keystone            ^^^^^^^^^^^^^^^^^^
  ERROR keystone   File "/opt/stack/keystone/keystone/api/auth.py", line 328, in post
  ERROR keystone     token = authentication.authenticate_for_token(auth_data)
  ERROR keystone             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  ERROR keystone   File "/opt/stack/keystone/keystone/api/_shared/authentication.py", line 229, in authenticate_for_token
  ERROR keystone     app_cred_id = token_auth['application_credential']['id']
  ERROR keystone                   ~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
  ERROR keystone KeyError: 'application_credential'
  ```

To manage notifications about this bug go to:
https://bugs.launchpad.net/keystone/+bug/2111836/+subscriptions