You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Running a query against the API with an auth header should authorize a user. However, if the auth header is specified and is empty, there is an internal server error.
For example:
$ curl --header "Authorization: bearer " http://localhost:8080/conda-store/api/v1/environment/
Internal Server Error
Expected behavior
When the user provides the auth header, there should be no errors on the server.
for a valid user - it should filter the results as per that user's permissions
for a non existing user - it should show just the public environments
for a missing token - it should show just the public environments
How to Reproduce the problem?
To reproduce this issue, startup the latest version of conda-store-server. Then run a curl request with an empty auth header.
$ docker compose up -d --build
$ curl --header "Authorization: bearer " http://localhost:8080/conda-store/api/v1/environment/
Internal Server Error
Output
Logs from the server
conda-store-server-1 | INFO: 172.18.0.1:58362 - "GET /conda-store/api/v1/environment/ HTTP/1.1" 500 Internal Server Error
conda-store-server-1 | ERROR: Exception in ASGI application
conda-store-server-1 | + Exception Group Traceback (most recent call last):
conda-store-server-1 | | File "/opt/conda/envs/conda-store-server/lib/python3.12/site-packages/starlette/_utils.py", line 76, in collapse_excgroups
conda-store-server-1 | | yield
conda-store-server-1 | | File "/opt/conda/envs/conda-store-server/lib/python3.12/site-packages/starlette/middleware/base.py", line 178, in __call__
conda-store-server-1 | | async with anyio.create_task_group() as task_group:
conda-store-server-1 | | ^^^^^^^^^^^^^^^^^^^^^^^^^
conda-store-server-1 | | File "/opt/conda/envs/conda-store-server/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 767, in __aexit__
conda-store-server-1 | | raise BaseExceptionGroup(
conda-store-server-1 | | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
conda-store-server-1 | +-+---------------- 1 ----------------
conda-store-server-1 | | Traceback (most recent call last):
conda-store-server-1 | | File "/opt/conda/envs/conda-store-server/lib/python3.12/site-packages/uvicorn/protocols/http/h11_impl.py", line 403, in run_asgi
conda-store-server-1 | | result = await app( # type: ignore[func-returns-value]
conda-store-server-1 | | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
conda-store-server-1 | | File "/opt/conda/envs/conda-store-server/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
conda-store-server-1 | | await super().__call__(scope, receive, send)
conda-store-server-1 | | File "/opt/conda/envs/conda-store-server/lib/python3.12/site-packages/starlette/applications.py", line 112, in __call__
conda-store-server-1 | | await self.middleware_stack(scope, receive, send)
conda-store-server-1 | | File "/opt/conda/envs/conda-store-server/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
conda-store-server-1 | | raise exc
conda-store-server-1 | | File "/opt/conda/envs/conda-store-server/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
conda-store-server-1 | | await self.app(scope, receive, _send)
conda-store-server-1 | | File "/opt/conda/envs/conda-store-server/lib/python3.12/site-packages/starlette/middleware/base.py", line 177, in __call__
conda-store-server-1 | | with recv_stream, send_stream, collapse_excgroups():
conda-store-server-1 | | ^^^^^^^^^^^^^^^^^^^^
conda-store-server-1 | | File "/opt/conda/envs/conda-store-server/lib/python3.12/contextlib.py", line 158, in __exit__
conda-store-server-1 | | self.gen.throw(value)
conda-store-server-1 | | File "/opt/conda/envs/conda-store-server/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
conda-store-server-1 | | raise exc
conda-store-server-1 | | File "/opt/conda/envs/conda-store-server/lib/python3.12/site-packages/starlette/middleware/base.py", line 179, in __call__
conda-store-server-1 | | response = await self.dispatch_func(request, call_next)
conda-store-server-1 | | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
conda-store-server-1 | | File "/opt/conda-store-server/conda_store_server/_internal/server/app.py", line 257, in conda_store_middleware
conda-store-server-1 | | response = await call_next(request)
conda-store-server-1 | | ^^^^^^^^^^^^^^^^^^^^^^^^
conda-store-server-1 | | File "/opt/conda/envs/conda-store-server/lib/python3.12/site-packages/starlette/middleware/base.py", line 154, in call_next
conda-store-server-1 | | raise app_exc
conda-store-server-1 | | File "/opt/conda/envs/conda-store-server/lib/python3.12/site-packages/starlette/middleware/base.py", line 141, in coro
conda-store-server-1 | | await self.app(scope, receive_or_disconnect, send_no_error)
conda-store-server-1 | | File "/opt/conda/envs/conda-store-server/lib/python3.12/site-packages/starlette/middleware/sessions.py", line 85, in __call__
conda-store-server-1 | | await self.app(scope, receive, send_wrapper)
conda-store-server-1 | | File "/opt/conda/envs/conda-store-server/lib/python3.12/site-packages/starlette/middleware/cors.py", line 85, in __call__
conda-store-server-1 | | await self.app(scope, receive, send)
conda-store-server-1 | | File "/opt/conda/envs/conda-store-server/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
conda-store-server-1 | | await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
conda-store-server-1 | | File "/opt/conda/envs/conda-store-server/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
conda-store-server-1 | | raise exc
conda-store-server-1 | | File "/opt/conda/envs/conda-store-server/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
conda-store-server-1 | | await app(scope, receive, sender)
conda-store-server-1 | | File "/opt/conda/envs/conda-store-server/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
conda-store-server-1 | | await self.middleware_stack(scope, receive, send)
conda-store-server-1 | | File "/opt/conda/envs/conda-store-server/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
conda-store-server-1 | | await route.handle(scope, receive, send)
conda-store-server-1 | | File "/opt/conda/envs/conda-store-server/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
conda-store-server-1 | | await self.app(scope, receive, send)
conda-store-server-1 | | File "/opt/conda/envs/conda-store-server/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
conda-store-server-1 | | await wrap_app_handling_exceptions(app, request)(scope, receive, send)
conda-store-server-1 | | File "/opt/conda/envs/conda-store-server/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
conda-store-server-1 | | raise exc
conda-store-server-1 | | File "/opt/conda/envs/conda-store-server/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
conda-store-server-1 | | await app(scope, receive, sender)
conda-store-server-1 | | File "/opt/conda/envs/conda-store-server/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
conda-store-server-1 | | response = await f(request)
conda-store-server-1 | | ^^^^^^^^^^^^^^^^
conda-store-server-1 | | File "/opt/conda/envs/conda-store-server/lib/python3.12/site-packages/fastapi/routing.py", line 291, in app
conda-store-server-1 | | solved_result = await solve_dependencies(
conda-store-server-1 | | ^^^^^^^^^^^^^^^^^^^^^^^^^
conda-store-server-1 | | File "/opt/conda/envs/conda-store-server/lib/python3.12/site-packages/fastapi/dependencies/utils.py", line 638, in solve_dependencies
conda-store-server-1 | | solved = await call(**solved_result.values)
conda-store-server-1 | | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
conda-store-server-1 | | File "/opt/conda-store-server/conda_store_server/_internal/server/dependencies.py", line 29, in get_entity
conda-store-server-1 | | return auth.authenticate_request(request)
conda-store-server-1 | | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
conda-store-server-1 | | File "/opt/conda-store-server/conda_store_server/server/auth.py", line 591, in authenticate_request
conda-store-server-1 | | request.state.entity = self.authentication.authenticate(parts[1])
conda-store-server-1 | | ~~~~~^^^
conda-store-server-1 | | IndexError: list index out of range
conda-store-server-1 | +------------------------------------
conda-store-server-1 |
conda-store-server-1 | During handling of the above exception, another exception occurred:
conda-store-server-1 |
conda-store-server-1 | Traceback (most recent call last):
conda-store-server-1 | File "/opt/conda/envs/conda-store-server/lib/python3.12/site-packages/uvicorn/protocols/http/h11_impl.py", line 403, in run_asgi
conda-store-server-1 | result = await app( # type: ignore[func-returns-value]
conda-store-server-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
conda-store-server-1 | File "/opt/conda/envs/conda-store-server/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
conda-store-server-1 | await super().__call__(scope, receive, send)
conda-store-server-1 | File "/opt/conda/envs/conda-store-server/lib/python3.12/site-packages/starlette/applications.py", line 112, in __call__
conda-store-server-1 | await self.middleware_stack(scope, receive, send)
conda-store-server-1 | File "/opt/conda/envs/conda-store-server/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
conda-store-server-1 | raise exc
conda-store-server-1 | File "/opt/conda/envs/conda-store-server/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
conda-store-server-1 | await self.app(scope, receive, _send)
conda-store-server-1 | File "/opt/conda/envs/conda-store-server/lib/python3.12/site-packages/starlette/middleware/base.py", line 177, in __call__
conda-store-server-1 | with recv_stream, send_stream, collapse_excgroups():
conda-store-server-1 | ^^^^^^^^^^^^^^^^^^^^
conda-store-server-1 | File "/opt/conda/envs/conda-store-server/lib/python3.12/contextlib.py", line 158, in __exit__
conda-store-server-1 | self.gen.throw(value)
conda-store-server-1 | File "/opt/conda/envs/conda-store-server/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
conda-store-server-1 | raise exc
conda-store-server-1 | File "/opt/conda/envs/conda-store-server/lib/python3.12/site-packages/starlette/middleware/base.py", line 179, in __call__
conda-store-server-1 | response = await self.dispatch_func(request, call_next)
conda-store-server-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
conda-store-server-1 | File "/opt/conda-store-server/conda_store_server/_internal/server/app.py", line 257, in conda_store_middleware
conda-store-server-1 | response = await call_next(request)
conda-store-server-1 | ^^^^^^^^^^^^^^^^^^^^^^^^
conda-store-server-1 | File "/opt/conda/envs/conda-store-server/lib/python3.12/site-packages/starlette/middleware/base.py", line 154, in call_next
conda-store-server-1 | raise app_exc
conda-store-server-1 | File "/opt/conda/envs/conda-store-server/lib/python3.12/site-packages/starlette/middleware/base.py", line 141, in coro
conda-store-server-1 | await self.app(scope, receive_or_disconnect, send_no_error)
conda-store-server-1 | File "/opt/conda/envs/conda-store-server/lib/python3.12/site-packages/starlette/middleware/sessions.py", line 85, in __call__
conda-store-server-1 | await self.app(scope, receive, send_wrapper)
conda-store-server-1 | File "/opt/conda/envs/conda-store-server/lib/python3.12/site-packages/starlette/middleware/cors.py", line 85, in __call__
conda-store-server-1 | await self.app(scope, receive, send)
conda-store-server-1 | File "/opt/conda/envs/conda-store-server/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
conda-store-server-1 | await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
conda-store-server-1 | File "/opt/conda/envs/conda-store-server/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
conda-store-server-1 | raise exc
conda-store-server-1 | File "/opt/conda/envs/conda-store-server/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
conda-store-server-1 | await app(scope, receive, sender)
conda-store-server-1 | File "/opt/conda/envs/conda-store-server/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
conda-store-server-1 | await self.middleware_stack(scope, receive, send)
conda-store-server-1 | File "/opt/conda/envs/conda-store-server/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
conda-store-server-1 | await route.handle(scope, receive, send)
conda-store-server-1 | File "/opt/conda/envs/conda-store-server/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
conda-store-server-1 | await self.app(scope, receive, send)
conda-store-server-1 | File "/opt/conda/envs/conda-store-server/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
conda-store-server-1 | await wrap_app_handling_exceptions(app, request)(scope, receive, send)
conda-store-server-1 | File "/opt/conda/envs/conda-store-server/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
conda-store-server-1 | raise exc
conda-store-server-1 | File "/opt/conda/envs/conda-store-server/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
conda-store-server-1 | await app(scope, receive, sender)
conda-store-server-1 | File "/opt/conda/envs/conda-store-server/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
conda-store-server-1 | response = await f(request)
conda-store-server-1 | ^^^^^^^^^^^^^^^^
conda-store-server-1 | File "/opt/conda/envs/conda-store-server/lib/python3.12/site-packages/fastapi/routing.py", line 291, in app
conda-store-server-1 | solved_result = await solve_dependencies(
conda-store-server-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^
conda-store-server-1 | File "/opt/conda/envs/conda-store-server/lib/python3.12/site-packages/fastapi/dependencies/utils.py", line 638, in solve_dependencies
conda-store-server-1 | solved = await call(**solved_result.values)
conda-store-server-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
conda-store-server-1 | File "/opt/conda-store-server/conda_store_server/_internal/server/dependencies.py", line 29, in get_entity
conda-store-server-1 | return auth.authenticate_request(request)
conda-store-server-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
conda-store-server-1 | File "/opt/conda-store-server/conda_store_server/server/auth.py", line 591, in authenticate_request
conda-store-server-1 | request.state.entity = self.authentication.authenticate(parts[1])
conda-store-server-1 | ~~~~~^^^
conda-store-server-1 | IndexError: list index out of range
Versions and dependencies used.
No response
Anything else?
No response
The text was updated successfully, but these errors were encountered:
Describe the bug
Running a query against the API with an auth header should authorize a user. However, if the auth header is specified and is empty, there is an internal server error.
For example:
Expected behavior
When the user provides the auth header, there should be no errors on the server.
How to Reproduce the problem?
To reproduce this issue, startup the latest version of conda-store-server. Then run a curl request with an empty auth header.
Output
Logs from the server
Versions and dependencies used.
No response
Anything else?
No response
The text was updated successfully, but these errors were encountered: