From 4ee2add8996c637b92e4a5d380c0400d2ae8b6e1 Mon Sep 17 00:00:00 2001 From: Peter Nehrer Date: Wed, 17 Sep 2025 01:02:37 -0600 Subject: [PATCH] bugfix: Non-empty paths in OAuth2 Authorization Server Metadata URLs (#441) * fix: support non-empty paths in OAuth2 Authorization Server Metadata URLs * fix: address formatting errors --- crates/rmcp/src/transport/auth.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/crates/rmcp/src/transport/auth.rs b/crates/rmcp/src/transport/auth.rs index 0df79ad..0192144 100644 --- a/crates/rmcp/src/transport/auth.rs +++ b/crates/rmcp/src/transport/auth.rs @@ -209,7 +209,11 @@ impl AuthorizationManager { pub async fn discover_metadata(&self) -> Result { // according to the specification, the metadata should be located at "/.well-known/oauth-authorization-server" let mut discovery_url = self.base_url.clone(); - discovery_url.set_path("/.well-known/oauth-authorization-server"); + let path = discovery_url.path(); + let path_suffix = if path == "/" { "" } else { path }; + discovery_url.set_path(&format!( + "/.well-known/oauth-authorization-server{path_suffix}" + )); debug!("discovery url: {:?}", discovery_url); let response = self .http_client