diff --git a/backend/open_webui/utils/tools.py b/backend/open_webui/utils/tools.py index f0e889d023..9d64db7d78 100644 --- a/backend/open_webui/utils/tools.py +++ b/backend/open_webui/utils/tools.py @@ -119,6 +119,8 @@ async def get_tools( function_name = spec["name"] auth_type = tool_server_connection.get("auth_type", "bearer") + + cookies = {} headers = {} if auth_type == "bearer": @@ -126,10 +128,12 @@ async def get_tools( f"Bearer {tool_server_connection.get('key', '')}" ) elif auth_type == "session": + cookies = request.cookies headers["Authorization"] = ( f"Bearer {request.state.token.credentials}" ) elif auth_type == "oauth": + cookies = request.cookies oauth_token = None try: oauth_token = ( @@ -145,6 +149,7 @@ async def get_tools( f"Bearer {oauth_token.get('access_token', '')}" ) elif auth_type == "request_headers": + cookies = request.cookies headers.update(dict(request.headers)) headers["Content-Type"] = "application/json" @@ -154,6 +159,7 @@ async def get_tools( return await execute_tool_server( url=tool_server_data["url"], headers=headers, + cookies=cookies, name=function_name, params=kwargs, server_data=tool_server_data, @@ -635,6 +641,7 @@ async def get_tool_servers_data( async def execute_tool_server( url: str, headers: Dict[str, str], + cookies: Dict[str, str], name: str, params: Dict[str, Any], server_data: Dict[str, Any],