diff --git a/backend/open_webui/utils/oauth.py b/backend/open_webui/utils/oauth.py index 9399241853..6cf91e3f12 100644 --- a/backend/open_webui/utils/oauth.py +++ b/backend/open_webui/utils/oauth.py @@ -198,13 +198,25 @@ def get_parsed_and_base_url(server_url) -> tuple[urllib.parse.ParseResult, str]: def get_discovery_urls(server_url) -> list[str]: - urls = [] parsed, base_url = get_parsed_and_base_url(server_url) - urls.append( - urllib.parse.urljoin(base_url, "/.well-known/oauth-authorization-server") - ) - urls.append(urllib.parse.urljoin(base_url, "/.well-known/openid-configuration")) + urls = [ + urllib.parse.urljoin(base_url, "/.well-known/oauth-authorization-server"), + urllib.parse.urljoin(base_url, "/.well-known/openid-configuration"), + ] + + if parsed.path and parsed.path != "/": + urls.append( + urllib.parse.urljoin( + base_url, + f"/.well-known/oauth-authorization-server{parsed.path.rstrip('/')}", + ) + ) + urls.append( + urllib.parse.urljoin( + base_url, f"/.well-known/openid-configuration{parsed.path.rstrip('/')}" + ) + ) return urls