mirror of
https://github.com/open-webui/open-webui.git
synced 2026-05-06 10:58:17 -05:00
[GH-ISSUE #21183] Regression: MCP OAuth 2.1 discovery fails when authorization_servers URL path doesn't match well-known endpoint location #58079
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @ashavolian on GitHub (Feb 5, 2026).
Original GitHub issue: https://github.com/open-webui/open-webui/issues/21183
Check Existing Issues
Installation Method
Git Clone
Open WebUI Version
v0.7.2
Ollama Version (if applicable)
No response
Operating System
ubuntu
Browser (if applicable)
No response
Confirmation
README.md.Expected Behavior
MCP OAuth 2.1 client registration should succeed when connecting to an MCP server that implements the Protected Resource discovery chain, even when the authorization_servers URL contains a path component (e.g., https://example.com/oauth) but the OAuth metadata is served at the domain root (https://example.com/.well-known/oauth-authorization-server).
In my case I'm trying to connect an enterprise glean mcp
Actual Behavior
OAuth client registration fails because OpenWebUI strictly appends /.well-known/oauth-authorization-server to the authorization_servers URL from Protected Resource metadata, without falling back to the domain root when that fails.
Steps to Reproduce
{ "resource": "https://example.com/mcp", "authorization_servers": ["https://example.com/oauth"] }
Logs & Screenshots
Root Cause in Code
File:
backend/open_webui/utils/oauth.py(lines 294-301)When
authorization_serversis["https://example.com/oauth"], OpenWebUI only tries:https://example.com/oauth/.well-known/oauth-authorization-server❌ (returns 307/404)It does not fall back to:
https://example.com/.well-known/oauth-authorization-server✅ (where metadata actually exists)Verification via curl
Additional Information
This issue affects MCP servers where:
authorization_serversvalue includes a path (e.g.,/oauth)The OAuth 2.1 spec (RFC 8414) is somewhat ambiguous here. Some implementations serve metadata at the root
.well-knownregardless of the issuer path.Suggested Fix
When building discovery URLs from
authorization_servers, also include fallback URLs at the domain root:Related issues: #19794, #20138, #20291
@owui-terminator[bot] commented on GitHub (Feb 5, 2026):
🔍 Similar Issues Found
I found some existing issues that might be related to this one. Please check if any of these are duplicates or contain helpful solutions:
#20847 issue: MCP OAuth2.1 initial auth doesn't work when a tool is enabled by default for a model
by Lemmons • Jan 21, 2026 •
bug#20808 issue: mcp oauth 2.1 callback always ends in 401 not authenticated
by bk-lg • Jan 20, 2026 •
bug#19823 Issue: MCP with OAuth 2.1 Authorization/Token retrival is broken in v0.6.41
by mllab-nl • Dec 08, 2025 •
bug#20828 issue: OAuth2.1 MCP Tool Server Verification Error - Failed to connect to the tool server: 'coroutine' object is not iterable
by Lemmons • Jan 20, 2026 •
bug#19116 issue: MCP OAuth 2.1 client registration fails when policy_uri, client_uri, logo_uri or tos_uri are not set
by xqqp • Nov 11, 2025 •
bugShow 3 more related issues
#19148 issue: Verify OAuth mcp server sends incorrect authorization header
by Oleg52 • Nov 12, 2025 •
bug#20629 issue: MCP server response fails
by thrasher • Jan 12, 2026 •
bug#21179 issue: [Bug] Web UI Trims Trailing Slash from MCP Server URL, Causing 301 Redirect and Broken Authorization
by ianohin • Feb 05, 2026 •
bug💡 Tips:
This comment was generated automatically by a bot. Please react with a 👍 if this comment was helpful, or a 👎 if it was not.