mirror of
https://github.com/openai/codex.git
synced 2026-11-13 22:47:20 +00:00
Harden MCP OAuth callback handling (#40691)
## Why MCP servers can share an OAuth callback URL. Without a validated issuer or a server-specific callback path, an authorization response could be associated with the wrong server. ## What changed - Use stable callbacks when authorization metadata advertises issuer-bound responses, and validate the returned issuer before exchanging the code. - Retain server-specific callback IDs for providers without issuer support, including fallback to the global or default callback for legacy registered clients. - Persist registered callback URLs for MCP servers and plugins, and insert the active listener port into portless loopback redirects. ## Testing Add coverage for issuer validation, callback-mode discovery, registered and legacy clients, plugin OAuth, CLI persistence, and loopback listener ports. GitOrigin-RevId: 2878c92e237fc17fd3def0bd2e1cce3e104a3db8
This commit is contained in:
1 parent
32ce703a80
commit
9be8d6e1c3
28 files changed
+1096
-127
No files matched your search
@@ -257,6 +257,12 @@ fn normalize_plugin_mcp_server_value(
|
||||
}
|
||||
|
||||
if let Some(JsonValue::Object(mut oauth)) = object.remove("oauth") {
|
||||
if let Some(callback_url) = oauth.remove("callbackUrl") {
|
||||
oauth
|
||||
.entry("callback_url".to_string())
|
||||
.or_insert(callback_url);
|
||||
}
|
||||
|
||||
if let Some(callback_port) = oauth.remove("callbackPort") {
|
||||
oauth
|
||||
.entry("callback_port".to_string())
|
||||
|
||||
Reference in new issue
Block a user