Commit 702aaec
Sébastien MORAND
feat: resolve virtual servers by name in RFC 9728 well-known and MCP endpoints
The well-known OAuth Protected Resource endpoint (RFC 9728) only accepted
UUID server identifiers, forcing clients to use opaque hex strings in URLs.
This adds server name resolution as a fallback while keeping full UUID
backward compatibility.
Changes:
- well_known.py: accept server name in addition to UUID, resolve to
canonical UUID for the resource URL (RFC 9728 stability)
- server_service.py: add resolve_server_id() that tries PK lookup first,
then falls back to name lookup
- streamablehttp_transport.py: use resolve_server_id() in _validate_server_id
and _check_server_oauth_enforcement for consistent name support
- Update tests to reflect name resolution behavior
Security: server name input is validated against a strict alphanumeric
pattern (SERVER_NAME_PATTERN) to prevent path traversal and injection.
Signed-off-by: Sébastien MORAND <sebastien.morand@ibm.com>1 parent 8866dd2 commit 702aaec
File tree
4 files changed
+60
-18
lines changed- mcpgateway
- routers
- services
- transports
- tests/unit/mcpgateway/routers
4 files changed
+60
-18
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
24 | 24 | | |
25 | 25 | | |
26 | 26 | | |
| 27 | + | |
27 | 28 | | |
28 | 29 | | |
29 | 30 | | |
| |||
38 | 39 | | |
39 | 40 | | |
40 | 41 | | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
41 | 45 | | |
42 | 46 | | |
43 | 47 | | |
| |||
169 | 173 | | |
170 | 174 | | |
171 | 175 | | |
172 | | - | |
173 | | - | |
174 | | - | |
175 | | - | |
176 | | - | |
177 | | - | |
178 | | - | |
| 176 | + | |
179 | 177 | | |
180 | 178 | | |
181 | 179 | | |
182 | | - | |
183 | 180 | | |
184 | 181 | | |
185 | 182 | | |
186 | | - | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
187 | 197 | | |
188 | 198 | | |
189 | 199 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
302 | 302 | | |
303 | 303 | | |
304 | 304 | | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
305 | 327 | | |
306 | 328 | | |
307 | 329 | | |
| |||
1901 | 1923 | | |
1902 | 1924 | | |
1903 | 1925 | | |
1904 | | - | |
| 1926 | + | |
| 1927 | + | |
| 1928 | + | |
| 1929 | + | |
| 1930 | + | |
1905 | 1931 | | |
1906 | 1932 | | |
1907 | 1933 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
951 | 951 | | |
952 | 952 | | |
953 | 953 | | |
| 954 | + | |
954 | 955 | | |
| 956 | + | |
| 957 | + | |
955 | 958 | | |
956 | 959 | | |
957 | 960 | | |
958 | 961 | | |
959 | | - | |
| 962 | + | |
960 | 963 | | |
961 | 964 | | |
962 | 965 | | |
| |||
2835 | 2838 | | |
2836 | 2839 | | |
2837 | 2840 | | |
2838 | | - | |
2839 | | - | |
| 2841 | + | |
2840 | 2842 | | |
2841 | 2843 | | |
2842 | 2844 | | |
2843 | 2845 | | |
2844 | 2846 | | |
2845 | | - | |
| 2847 | + | |
| 2848 | + | |
2846 | 2849 | | |
2847 | 2850 | | |
2848 | 2851 | | |
2849 | 2852 | | |
| 2853 | + | |
2850 | 2854 | | |
2851 | 2855 | | |
2852 | 2856 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
125 | 125 | | |
126 | 126 | | |
127 | 127 | | |
128 | | - | |
| 128 | + | |
129 | 129 | | |
| 130 | + | |
| 131 | + | |
130 | 132 | | |
131 | 133 | | |
132 | 134 | | |
133 | 135 | | |
134 | 136 | | |
135 | 137 | | |
136 | 138 | | |
137 | | - | |
| 139 | + | |
138 | 140 | | |
139 | 141 | | |
140 | | - | |
| 142 | + | |
141 | 143 | | |
142 | | - | |
| 144 | + | |
143 | 145 | | |
144 | 146 | | |
145 | 147 | | |
| |||
0 commit comments