From 19f9b5bbeadc6b3d0f02b8e973c08bde88433713 Mon Sep 17 00:00:00 2001 From: Gwyneth Pena-Siguenza Date: Tue, 16 Dec 2025 00:07:34 -0500 Subject: [PATCH 01/12] keycloak and vscode --- .vscode/mcp.json | 6 +- keycloak/realm.json | 86 +++++----- servers/auth_mcp.py | 58 +++++-- servers/keycloak_provider.py | 323 +++++++++++++++++++++++++++++++++++ 4 files changed, 416 insertions(+), 57 deletions(-) create mode 100644 servers/keycloak_provider.py diff --git a/.vscode/mcp.json b/.vscode/mcp.json index fe05888..9d5484e 100644 --- a/.vscode/mcp.json +++ b/.vscode/mcp.json @@ -28,6 +28,10 @@ "servers/basic_mcp_stdio.py" ] }, + "my-mcp-server-e53825c5": { + "url": "http://localhost:8000/mcp", + "type": "http" + } }, "inputs": [] -} +} \ No newline at end of file diff --git a/keycloak/realm.json b/keycloak/realm.json index 16cb5fb..e75f802 100644 --- a/keycloak/realm.json +++ b/keycloak/realm.json @@ -14,40 +14,42 @@ "accessCodeLifespan": 60, "accessCodeLifespanUserAction": 300, "accessCodeLifespanLogin": 1800, - "clientScopes": [ + "clients": [ { - "name": "mcp-server", - "description": "MCP Server audience scope for DCR clients", - "protocol": "openid-connect", - "attributes": { - "include.in.token.scope": "true", - "display.on.consent.screen": "false" - }, - "protocolMappers": [ + "clientId": "vscode-mcp-client", + "name": "VS Code MCP Client", + "enabled": true, + "publicClient": true, + "standardFlowEnabled": true, + "directAccessGrantsEnabled": true, + "serviceAccountsEnabled": false, + "authorizationServicesEnabled": false, + "fullScopeAllowed": true, + "redirectUris": [ + "http://127.0.0.1/*", + "http://localhost/*", + "https://vscode.dev/redirect", + "https://insiders.vscode.dev/redirect" + ], + "webOrigins": ["+"] + } + ], + "users": [ + { + "username": "testuser", + "enabled": true, + "email": "testuser@example.com", + "firstName": "Test", + "lastName": "User", + "credentials": [ { - "name": "mcp-server-audience", - "protocol": "openid-connect", - "protocolMapper": "oidc-audience-mapper", - "consentRequired": false, - "config": { - "included.custom.audience": "mcp-server", - "id.token.claim": "true", - "access.token.claim": "true", - "introspection.token.claim": "true" - } + "type": "password", + "value": "testpass", + "temporary": false } ] } ], - "defaultDefaultClientScopes": [ - "mcp-server", - "profile", - "email", - "roles", - "web-origins", - "acr", - "basic" - ], "components": { "org.keycloak.services.clientregistration.policy.ClientRegistrationPolicy": [ { @@ -57,7 +59,15 @@ "config": { "host-sending-registration-request-must-match": ["false"], "client-uris-must-match": ["true"], - "trusted-hosts": ["localhost", "127.0.0.1", "*.azurecontainerapps.io"] + "trusted-hosts": [ + "localhost", + "127.0.0.1", + "172.17.0.1", + "host.docker.internal", + "vscode.dev", + "insiders.vscode.dev", + "code.visualstudio.com" + ] } }, { @@ -66,12 +76,6 @@ "subType": "anonymous", "config": {} }, - { - "name": "Full Scope Disabled", - "providerId": "scope", - "subType": "anonymous", - "config": {} - }, { "name": "Max Clients Limit", "providerId": "max-clients", @@ -93,7 +97,10 @@ "oidc-usermodel-property-mapper", "saml-role-idp-mapper", "saml-user-property-idp-mapper", - "oidc-sha256-pairwise-sub-mapper" + "oidc-sha256-pairwise-sub-mapper", + "oidc-sub-mapper", + "oidc-usersessionmodel-note-mapper", + "oidc-audience-mapper" ] } }, @@ -118,7 +125,10 @@ "oidc-full-name-mapper", "oidc-usermodel-property-mapper", "saml-user-attribute-idp-mapper", - "oidc-address-mapper" + "oidc-address-mapper", + "oidc-sub-mapper", + "oidc-usersessionmodel-note-mapper", + "oidc-audience-mapper" ] } }, @@ -132,4 +142,4 @@ } ] } -} +} \ No newline at end of file diff --git a/servers/auth_mcp.py b/servers/auth_mcp.py index f35bdab..ffe14fa 100644 --- a/servers/auth_mcp.py +++ b/servers/auth_mcp.py @@ -15,14 +15,12 @@ from cosmosdb_store import CosmosDBStore from dotenv import load_dotenv from fastmcp import Context, FastMCP -from fastmcp.server.auth import RemoteAuthProvider from fastmcp.server.auth.providers.azure import AzureProvider -from fastmcp.server.auth.providers.jwt import JWTVerifier from fastmcp.server.dependencies import get_access_token from fastmcp.server.middleware import Middleware, MiddlewareContext from key_value.aio.stores.memory import MemoryStore +from keycloak_provider import KeycloakAuthProvider from opentelemetry.instrumentation.starlette import StarletteInstrumentor -from pydantic import AnyHttpUrl from rich.console import Console from rich.logging import RichHandler from starlette.responses import JSONResponse @@ -100,25 +98,25 @@ "Using Entra OAuth Proxy for server %s and %s storage", entra_base_url, type(oauth_client_store).__name__ ) elif mcp_auth_provider == "keycloak": - # Keycloak authentication using RemoteAuthProvider with JWT verification + # Keycloak authentication using KeycloakAuthProvider with DCR support + # This enables VS Code and other MCP clients to dynamically register and authenticate KEYCLOAK_REALM_URL = os.environ["KEYCLOAK_REALM_URL"] KEYCLOAK_TOKEN_ISSUER = os.getenv("KEYCLOAK_TOKEN_ISSUER", KEYCLOAK_REALM_URL) - token_verifier = JWTVerifier( - jwks_uri=f"{KEYCLOAK_REALM_URL}/protocol/openid-connect/certs", - issuer=KEYCLOAK_TOKEN_ISSUER, - audience=os.getenv("KEYCLOAK_MCP_SERVER_AUDIENCE", "mcp-server"), - ) - # Prefer specific base URL env for Keycloak when provided - if RUNNING_IN_PRODUCTION: - keycloak_base_url = os.environ["KEYCLOAK_MCP_SERVER_BASE_URL"] - else: - keycloak_base_url = "http://localhost:8000/mcp" - auth = RemoteAuthProvider( - token_verifier=token_verifier, - authorization_servers=[AnyHttpUrl(KEYCLOAK_REALM_URL)], + # Use KEYCLOAK_MCP_SERVER_BASE_URL if provided, otherwise default based on environment + keycloak_base_url = os.getenv("KEYCLOAK_MCP_SERVER_BASE_URL") + if not keycloak_base_url: + keycloak_base_url = "http://localhost:8000" if not RUNNING_IN_PRODUCTION else None + if not keycloak_base_url: + raise ValueError("KEYCLOAK_MCP_SERVER_BASE_URL must be set in production") + auth = KeycloakAuthProvider( + realm_url=KEYCLOAK_REALM_URL, base_url=keycloak_base_url, + required_scopes=[], + # Audience should match the value in Keycloak's mcp:tools scope + # Default to the base_url for local dev + audience=None ) - logger.info("Using Keycloak auth for server %s and realm %s", keycloak_base_url, KEYCLOAK_REALM_URL) + logger.info("Using Keycloak DCR auth for server %s and realm %s", keycloak_base_url, KEYCLOAK_REALM_URL) else: logger.error("No authentication configured for MCP server, exiting.") raise SystemExit(1) @@ -247,7 +245,31 @@ async def health_check(_request): return JSONResponse({"status": "healthy", "service": "mcp-server"}) + +# Debug middleware to log token claims before auth +from starlette.middleware.base import BaseHTTPMiddleware +import base64 +import json + +class TokenDebugMiddleware(BaseHTTPMiddleware): + async def dispatch(self, request, call_next): + auth_header = request.headers.get("Authorization", "") + if auth_header.startswith("Bearer "): + token = auth_header[7:] + try: + parts = token.split('.') + payload = parts[1] + payload += '=' * (4 - len(payload) % 4) + claims = json.loads(base64.urlsafe_b64decode(payload)) + logger.info(f"=== TOKEN DEBUG ===") + logger.info(f"ALL CLAIMS: {claims}") + logger.info(f"===================") + except Exception as e: + logger.error(f"Token decode error: {e}") + return await call_next(request) + # Configure Starlette middleware for OpenTelemetry # We must do this *after* defining all the MCP server routes app = mcp.http_app() +app.add_middleware(TokenDebugMiddleware) StarletteInstrumentor.instrument_app(app) diff --git a/servers/keycloak_provider.py b/servers/keycloak_provider.py new file mode 100644 index 0000000..84cdc0e --- /dev/null +++ b/servers/keycloak_provider.py @@ -0,0 +1,323 @@ +"""Keycloak authentication provider for FastMCP. + +This module provides KeycloakAuthProvider - a complete authentication solution +that integrates with Keycloak's OAuth 2.1 and OpenID Connect services, supporting +Dynamic Client Registration (DCR) for seamless MCP client authentication. + +This is vendored from the proposed FastMCP PR: +https://github.com/jlowin/fastmcp/pull/1937 + +Once merged into FastMCP, this file can be removed and replaced with: + from fastmcp.server.auth.providers.keycloak import KeycloakAuthProvider +""" + +from __future__ import annotations + +import httpx +from pydantic import AnyHttpUrl +from starlette.responses import JSONResponse +from starlette.routing import Route + +from fastmcp.server.auth import RemoteAuthProvider +from fastmcp.server.auth.providers.jwt import JWTVerifier +from fastmcp.utilities.logging import get_logger + + +import base64 +import json + +def decode_jwt_debug(token): + """Decode JWT payload for debugging""" + try: + parts = token.split('.') + payload = parts[1] + payload += '=' * (4 - len(payload) % 4) + decoded = base64.urlsafe_b64decode(payload) + return json.loads(decoded) + except Exception as e: + return {"error": str(e)} + +logger = get_logger(__name__) + + +class KeycloakAuthProvider(RemoteAuthProvider): + """Keycloak authentication provider with minimal DCR proxy for MCP compatibility. + + This provider integrates FastMCP with Keycloak using a **minimal proxy architecture** + that solves a specific MCP compatibility issue. The proxy only intercepts DCR + responses to fix a single field - all other OAuth operations go directly to Keycloak. + + ## Why a Minimal Proxy is Needed + + Keycloak has a known limitation with Dynamic Client Registration: it ignores + the client's requested `token_endpoint_auth_method` parameter and always returns + `client_secret_basic`, even when clients explicitly request `client_secret_post` + (which MCP requires per RFC 9110). + + This minimal proxy works around this by: + 1. Advertising itself as the authorization server to MCP clients + 2. Forwarding Keycloak's OAuth metadata with a custom registration endpoint + 3. Intercepting DCR responses from Keycloak and fixing only the + `token_endpoint_auth_method` field + + **What the minimal proxy does NOT intercept:** + - Authorization flows (users authenticate directly with Keycloak) + - Token issuance (tokens come directly from Keycloak) + - Token validation (JWT signatures verified against Keycloak's keys) + + ## Setup Requirements + + 1. Configure Keycloak realm with Dynamic Client Registration enabled + 2. Configure trusted hosts policy to allow client redirect URIs + 3. Set `client-uris-must-match` to `false` for dynamic redirect URIs + 4. Add test users to the realm for authentication + + Example: + ```python + from fastmcp import FastMCP + from keycloak_provider import KeycloakAuthProvider + + # Create Keycloak provider (JWT verifier created automatically) + keycloak_auth = KeycloakAuthProvider( + realm_url="http://localhost:8080/realms/mcp", + base_url="http://localhost:8000", + required_scopes=["openid", "mcp:tools"], + audience="http://localhost:8000", # Should match Keycloak's audience mapper + ) + + # Use with FastMCP + mcp = FastMCP("My App", auth=keycloak_auth) + ``` + """ + + def __init__( + self, + *, + realm_url: str | AnyHttpUrl, + base_url: str | AnyHttpUrl, + required_scopes: list[str] | None = None, + audience: str | list[str] | None = None, + token_verifier: JWTVerifier | None = None, + ): + """Initialize the Keycloak authentication provider. + + Args: + realm_url: Full URL to the Keycloak realm (e.g., + "https://keycloak.example.com/realms/myrealm") + base_url: Public URL of this FastMCP server + required_scopes: Optional list of scopes to require for all requests + audience: Optional audience(s) for JWT validation. If not specified + and no custom verifier is provided, audience validation is disabled. + For production use, it's recommended to set this to your resource + server identifier or base_url. + token_verifier: Optional token verifier. If None, creates JWT verifier + for Keycloak + """ + self.base_url = AnyHttpUrl(str(base_url).rstrip("/")) + self.realm_url = str(realm_url).rstrip("/") + + # Create default JWT verifier if none provided + if token_verifier is None: + # Keycloak uses specific URL patterns (not the standard .well-known paths) + token_verifier = JWTVerifier( + jwks_uri=f"{self.realm_url}/protocol/openid-connect/certs", + issuer=self.realm_url, + algorithm="RS256", + required_scopes=required_scopes, + audience=audience, + ) + + # Initialize RemoteAuthProvider with FastMCP as the authorization server + # We advertise ourselves as the auth server because we provide the + # authorization server metadata endpoint that forwards from Keycloak + # with our /register DCR proxy endpoint. + super().__init__( + token_verifier=token_verifier, + authorization_servers=[self.base_url], + base_url=self.base_url, + ) + + def get_routes( + self, + mcp_path: str | None = None, + ) -> list[Route]: + """Get OAuth routes including Keycloak metadata forwarding and minimal DCR proxy. + + Adds two routes to the parent class's protected resource metadata: + 1. `/.well-known/oauth-authorization-server` - Forwards Keycloak's OAuth metadata + with the registration endpoint rewritten to point to our minimal DCR proxy + 2. `/register` - Minimal DCR proxy that forwards requests to Keycloak and fixes + only the `token_endpoint_auth_method` field in responses + + Args: + mcp_path: The path where the MCP endpoint is mounted (e.g., "/mcp") + """ + # Get the standard protected resource routes from RemoteAuthProvider + routes = super().get_routes(mcp_path) + + async def oauth_authorization_server_metadata(request): + """Forward Keycloak's OAuth metadata with registration endpoint pointing to our minimal DCR proxy.""" + try: + async with httpx.AsyncClient() as client: + response = await client.get( + f"{self.realm_url}/.well-known/oauth-authorization-server" + ) + response.raise_for_status() + metadata = response.json() + + # Override registration_endpoint to use our minimal DCR proxy + base_url = str(self.base_url).rstrip("/") + metadata["registration_endpoint"] = f"{base_url}/register" + + # Override issuer to match our base URL (required for OAuth discovery) + # VS Code validates that the issuer matches the authorization server URL + # AnyHttpUrl adds trailing slash to root URLs, so we need to match that + + + # Also fix mtls_endpoint_aliases if present (VS Code may check this) + if "mtls_endpoint_aliases" in metadata: + metadata["mtls_endpoint_aliases"]["registration_endpoint"] = f"{base_url}/register" + + return JSONResponse(metadata) + except Exception as e: + logger.error(f"Failed to fetch Keycloak metadata: {e}") + return JSONResponse( + { + "error": "server_error", + "error_description": f"Failed to fetch Keycloak metadata: {e}", + }, + status_code=500, + ) + + # Add Keycloak authorization server metadata forwarding + routes.append( + Route( + "/.well-known/oauth-authorization-server", + endpoint=oauth_authorization_server_metadata, + methods=["GET"], + ) + ) + + async def register_client_fix_auth_method(request): + """Minimal DCR proxy that fixes token_endpoint_auth_method in Keycloak's client registration response. + + Forwards registration requests to Keycloak's DCR endpoint and modifies only the + token_endpoint_auth_method field in the response. For MCP compatibility: + - "client_secret_basic" -> "none" (public client, no secret needed) + - Preserves "none" if requested + + All other fields are passed through unchanged. + """ + try: + body = await request.body() + + # Log incoming request for debugging + try: + import json + request_data = json.loads(body) + logger.info(f"DCR request received: client_name={request_data.get('client_name')}, " + f"redirect_uris={request_data.get('redirect_uris')}, " + f"token_endpoint_auth_method={request_data.get('token_endpoint_auth_method')}") + except Exception: + logger.info(f"DCR request received (raw): {body[:500]}") + + # Forward to Keycloak's DCR endpoint + async with httpx.AsyncClient(timeout=10.0) as client: + forward_headers = { + key: value + for key, value in request.headers.items() + if key.lower() + not in {"host", "content-length", "transfer-encoding"} + } + forward_headers["Content-Type"] = "application/json" + + # Keycloak's standard DCR endpoint pattern + registration_endpoint = ( + f"{self.realm_url}/clients-registrations/openid-connect" + ) + + logger.info(f"Forwarding DCR to Keycloak: {registration_endpoint}") + + response = await client.post( + registration_endpoint, + content=body, + headers=forward_headers, + ) + + logger.info(f"Keycloak DCR response status: {response.status_code}") + + if response.status_code != 201: + error_body = response.text + logger.error(f"Keycloak DCR failed: {response.status_code} - {error_body}") + try: + error_json = response.json() + except Exception: + error_json = {"error": "registration_failed", "error_description": error_body} + return JSONResponse( + error_json, + status_code=response.status_code, + ) + + # Fix token_endpoint_auth_method for MCP compatibility + client_info = response.json() + original_auth_method = client_info.get("token_endpoint_auth_method") + + logger.info( + f"Keycloak returned token_endpoint_auth_method: {original_auth_method}" + ) + + # MCP requires public clients (token_endpoint_auth_method: none) + # Keycloak ignores the client's request and returns client_secret_basic + # We fix this by always returning "none" for MCP clients + if original_auth_method in ("client_secret_basic", "client_secret_post"): + logger.info( + f"Fixing token_endpoint_auth_method: {original_auth_method} -> none" + ) + client_info["token_endpoint_auth_method"] = "none" + + logger.info( + f"Returning to client: client_id={client_info.get('client_id')}, " + f"token_endpoint_auth_method={client_info.get('token_endpoint_auth_method')}" + ) + + return JSONResponse(client_info, status_code=201) + + except Exception as e: + logger.error(f"DCR proxy error: {e}") + return JSONResponse( + { + "error": "server_error", + "error_description": f"Client registration failed: {e}", + }, + status_code=500, + ) + + # Add minimal DCR proxy + routes.append( + Route( + "/register", + endpoint=register_client_fix_auth_method, + methods=["POST"], + ) + ) + + async def debug_token(request): + """Debug endpoint to decode and inspect JWT tokens""" + auth_header = request.headers.get("Authorization", "") + if not auth_header.startswith("Bearer "): + return JSONResponse({"error": "No bearer token"}, status_code=400) + + token = auth_header[7:] + claims = decode_jwt_debug(token) + + return JSONResponse({ + "token_claims": claims, + "expected_issuer": self.realm_url, + "expected_audience": str(self.base_url), + }) + + routes.append( + Route("/debug-token", endpoint=debug_token, methods=["GET", "POST"]) + ) + + return routes From 2dec6dbf4c8b87f18b88abb8debb59ba3599c24d Mon Sep 17 00:00:00 2001 From: Gwyneth Pena-Siguenza Date: Tue, 16 Dec 2025 14:29:10 -0500 Subject: [PATCH 02/12] Add VS Code GitHub Copilot integration docs for Keycloak OAuth - Add "Use Keycloak OAuth MCP server with GitHub Copilot" section to README - Add step-by-step instructions for connecting VS Code to deployed MCP server - Include screenshots for authentication flow (allow access, sign-in, redirect) - Add Spanish translation of the new section to spanish/README.md - Configure VS Code redirect URIs in Keycloak realm for DCR support - Update infra and keycloak configs for VS Code OAuth redirect handling --- .vscode/mcp.json | 4 +-- README.md | 40 ++++++++++++++++++++++++++++++ agents/agentframework_http.py | 39 ++++++----------------------- agents/keycloak_auth.py | 1 + infra/http-routes.bicep | 6 ++--- infra/main.bicep | 11 ++++---- infra/write_env.ps1 | 1 + infra/write_env.sh | 1 + keycloak/Dockerfile | 3 ++- keycloak/realm.json | 16 ++++++------ screenshots/kc-allow-1.jpg | Bin 0 -> 96548 bytes screenshots/kc-chat-5.jpg | Bin 0 -> 126301 bytes screenshots/kc-redirect-3.jpg | Bin 0 -> 114710 bytes screenshots/kc-select-tools-4.jpg | Bin 0 -> 41066 bytes screenshots/kc-signin-2.jpg | Bin 0 -> 146141 bytes servers/keycloak_provider.py | 2 +- spanish/README.md | 40 ++++++++++++++++++++++++++++++ 17 files changed, 112 insertions(+), 52 deletions(-) create mode 100644 screenshots/kc-allow-1.jpg create mode 100644 screenshots/kc-chat-5.jpg create mode 100644 screenshots/kc-redirect-3.jpg create mode 100644 screenshots/kc-select-tools-4.jpg create mode 100644 screenshots/kc-signin-2.jpg diff --git a/.vscode/mcp.json b/.vscode/mcp.json index 9d5484e..fa3bade 100644 --- a/.vscode/mcp.json +++ b/.vscode/mcp.json @@ -28,8 +28,8 @@ "servers/basic_mcp_stdio.py" ] }, - "my-mcp-server-e53825c5": { - "url": "http://localhost:8000/mcp", + "my-mcp-server-60626805": { + "url": "https://mcproutes.whitetree-5dc0246f.eastus2.azurecontainerapps.io/mcp", "type": "http" } }, diff --git a/README.md b/README.md index 28848d9..63eb850 100644 --- a/README.md +++ b/README.md @@ -393,6 +393,46 @@ This project supports deploying with OAuth 2.0 authentication using Keycloak as The agent automatically detects `KEYCLOAK_REALM_URL` in the environment and authenticates via DCR + client credentials. On success, it will add an expense and print the result. +### Use Keycloak OAuth MCP server with GitHub Copilot + +The Keycloak deployment supports Dynamic Client Registration (DCR), which allows VS Code to automatically register as an OAuth client. VS Code redirect URIs are pre-configured in the Keycloak realm. + +To use the deployed MCP server with GitHub Copilot Chat: + +1. To avoid conflicts, stop the MCP servers from `mcp.json` and disable the expense MCP servers in GitHub Copilot Chat tools. +2. Select "MCP: Add Server" from the VS Code Command Palette +3. Select "HTTP" as the server type +4. Enter the URL of the MCP server from `azd env get-value MCP_SERVER_URL` +5. You should see a Keycloak authentication screen open in your browser. Select "Allow access": + + ![Keycloak allow access screen](screenshots/kc-allow-1.jpg) + +6. Sign in with a Keycloak user (e.g., `testuser` / `testpass` for the pre-configured demo user): + + ![Keycloak sign-in screen](screenshots/kc-signin-2.jpg) + +7. After authentication, the browser will redirect back to VS Code: + + ![VS Code redirect after Keycloak sign-in](screenshots/kc-redirect-3.jpg) + +8. Enable the MCP server in GitHub Copilot Chat tools: + + ![Select MCP tools in GitHub Copilot](screenshots/kc-select-tools-4.jpg) + +9. Test it with an expense tracking query: + + ```text + Log expense for 75 dollars of office supplies on my visa last Friday + ``` + + ![Example GitHub Copilot Chat with Keycloak auth](screenshots/kc-chat-5.jpg) + +10. Verify the expense was added by checking the Cosmos DB `user-expenses` container in the Azure Portal or by asking GitHub Copilot Chat: + + ```text + Show me my expenses from last week + ``` + ### Known limitations (demo trade-offs) | Item | Current | Production Recommendation | Why | diff --git a/agents/agentframework_http.py b/agents/agentframework_http.py index b0b734c..e63b42e 100644 --- a/agents/agentframework_http.py +++ b/agents/agentframework_http.py @@ -1,5 +1,3 @@ -from __future__ import annotations - import asyncio import logging import os @@ -13,24 +11,18 @@ from rich import print from rich.logging import RichHandler -try: - from keycloak_auth import get_auth_headers -except ImportError: - from agents.keycloak_auth import get_auth_headers - # Configure logging logging.basicConfig(level=logging.WARNING, format="%(message)s", datefmt="[%X]", handlers=[RichHandler()]) logger = logging.getLogger("agentframework_mcp_http") +logger.setLevel(logging.INFO) -# Load environment variables -load_dotenv(override=True) - -# Constants +# Configure constants and client based on environment RUNNING_IN_PRODUCTION = os.getenv("RUNNING_IN_PRODUCTION", "false").lower() == "true" -MCP_SERVER_URL = os.getenv("MCP_SERVER_URL", "http://localhost:8000/mcp/") -# Optional: Keycloak authentication (set KEYCLOAK_REALM_URL to enable) -KEYCLOAK_REALM_URL = os.getenv("KEYCLOAK_REALM_URL") +if not RUNNING_IN_PRODUCTION: + load_dotenv(override=True) + +MCP_SERVER_URL = os.getenv("MCP_SERVER_URL", "http://localhost:8000/mcp/") # Configure chat client based on API_HOST API_HOST = os.getenv("API_HOST", "github") @@ -61,24 +53,9 @@ # --- Main Agent Logic --- - - async def http_mcp_example() -> None: - """ - Demonstrate MCP integration with the Expenses MCP server. - - If KEYCLOAK_REALM_URL is set, authenticates via OAuth (DCR + client credentials). - Otherwise, connects without authentication. - """ - # Get auth headers if Keycloak is configured - headers = await get_auth_headers(KEYCLOAK_REALM_URL, client_name_prefix="agentframework") - if headers: - logger.info(f"🔐 Auth enabled - connecting to {MCP_SERVER_URL} with Bearer token") - else: - logger.info(f"📡 No auth - connecting to {MCP_SERVER_URL}") - async with ( - MCPStreamableHTTPTool(name="Expenses MCP Server", url=MCP_SERVER_URL, headers=headers) as mcp_server, + MCPStreamableHTTPTool(name="Expenses MCP Server", url=MCP_SERVER_URL) as mcp_server, ChatAgent( chat_client=client, name="Expenses Agent", @@ -96,4 +73,4 @@ async def http_mcp_example() -> None: if __name__ == "__main__": - asyncio.run(http_mcp_example()) + asyncio.run(http_mcp_example()) \ No newline at end of file diff --git a/agents/keycloak_auth.py b/agents/keycloak_auth.py index b98d1f7..8506ce6 100644 --- a/agents/keycloak_auth.py +++ b/agents/keycloak_auth.py @@ -27,6 +27,7 @@ async def register_client_via_dcr(keycloak_realm_url: str, client_name_prefix: s Args: keycloak_realm_url: The Keycloak realm URL (e.g., http://localhost:8080/realms/myrealm) + Make sure to use direct container URL, not route. client_name_prefix: Prefix for the generated client name Returns: diff --git a/infra/http-routes.bicep b/infra/http-routes.bicep index 0f8ced4..fc4ba48 100644 --- a/infra/http-routes.bicep +++ b/infra/http-routes.bicep @@ -29,7 +29,7 @@ resource httpRouteConfig 'Microsoft.App/managedEnvironments/httpRouteConfigs@202 parent: containerEnv properties: { rules: [ - // Route /auth/* to Keycloak (strip /auth prefix since Keycloak serves at root) + // Route /auth/* to Keycloak (Keycloak is configured with --http-relative-path=/auth) // Using pathSeparatedPrefix ensures /auth doesn't match /authentication { description: 'Keycloak Authentication Server' @@ -38,9 +38,7 @@ resource httpRouteConfig 'Microsoft.App/managedEnvironments/httpRouteConfigs@202 match: { pathSeparatedPrefix: '/auth' } - action: { - prefixRewrite: '/' - } + action: {} } ] targets: [ diff --git a/infra/main.bicep b/infra/main.bicep index 30a1d3d..c776b81 100644 --- a/infra/main.bicep +++ b/infra/main.bicep @@ -749,8 +749,8 @@ module server 'server.bicep' = { applicationInsightsConnectionString: useMonitoring ? applicationInsights!.outputs.connectionString : '' exists: serverExists // Keycloak authentication configuration (only when enabled) - keycloakRealmUrl: useKeycloak ? '${keycloak!.outputs.uri}/realms/${keycloakRealmName}' : '' - keycloakTokenIssuer: useKeycloak ? '${keycloakMcpServerBaseUrl}/realms/${keycloakRealmName}' : '' + keycloakRealmUrl: useKeycloak ? '${keycloak!.outputs.uri}/auth/realms/${keycloakRealmName}' : '' + keycloakTokenIssuer: useKeycloak ? '${keycloakMcpServerBaseUrl}/auth/realms/${keycloakRealmName}' : '' keycloakMcpServerBaseUrl: useKeycloak ? keycloakMcpServerBaseUrl : '' keycloakMcpServerAudience: keycloakMcpServerAudience // Azure/Entra ID OAuth Proxy authentication configuration (only when enabled) @@ -776,7 +776,7 @@ module agent 'agent.bicep' = { openAiDeploymentName: openAiDeploymentName openAiEndpoint: openAi.outputs.endpoint mcpServerUrl: useKeycloak ? 'https://mcproutes.${containerApps.outputs.defaultDomain}/mcp' : '${server.outputs.uri}/mcp' - keycloakRealmUrl: useKeycloak ? '${keycloak.outputs.uri}/realms/${keycloakRealmName}' : '' + keycloakRealmUrl: useKeycloak ? '${keycloak.outputs.uri}/auth/realms/${keycloakRealmName}' : '' exists: agentExists } } @@ -912,9 +912,10 @@ output KEYCLOAK_MCP_SERVER_BASE_URL string = useKeycloak ? keycloakMcpServerBase // Keycloak and MCP Server routing outputs (only populated when mcpAuthProvider is keycloak) output KEYCLOAK_REALM_URL string = useKeycloak ? '${httpRoutes!.outputs.routeConfigUrl}/auth/realms/${keycloakRealmName}' : '' -output KEYCLOAK_ADMIN_CONSOLE string = useKeycloak ? '${httpRoutes!.outputs.routeConfigUrl}/auth/admin' : '' +output KEYCLOAK_ADMIN_CONSOLE string = useKeycloak ? '${httpRoutes!.outputs.routeConfigUrl}/auth/admin/master/console' : '' output KEYCLOAK_DIRECT_URL string = keycloak.outputs.uri -output KEYCLOAK_TOKEN_ISSUER string = useKeycloak ? '${keycloakMcpServerBaseUrl}/realms/${keycloakRealmName}' : '' +output KEYCLOAK_TOKEN_ISSUER string = useKeycloak ? '${keycloakMcpServerBaseUrl}/auth/realms/${keycloakRealmName}' : '' +output KEYCLOAK_AGENT_REALM_URL string = useKeycloak ? '${keycloak!.outputs.uri}/auth/realms/${keycloakRealmName}' : '' // Auth provider for env scripts output MCP_AUTH_PROVIDER string = mcpAuthProvider diff --git a/infra/write_env.ps1 b/infra/write_env.ps1 index f87eae1..22e9e96 100644 --- a/infra/write_env.ps1 +++ b/infra/write_env.ps1 @@ -47,6 +47,7 @@ $KEYCLOAK_REALM_URL = Get-AzdValue KEYCLOAK_REALM_URL if ($KEYCLOAK_REALM_URL -and $KEYCLOAK_REALM_URL -ne "") { Add-Content -Path $ENV_FILE_PATH -Value "KEYCLOAK_REALM_URL=$KEYCLOAK_REALM_URL" Write-EnvIfSet KEYCLOAK_TOKEN_ISSUER + Write-EnvIfSet KEYCLOAK_AGENT_REALM_URL } # Entra proxy env vars (only if ENTRA_PROXY_AZURE_CLIENT_ID is set) diff --git a/infra/write_env.sh b/infra/write_env.sh index 2382b36..ab241a9 100755 --- a/infra/write_env.sh +++ b/infra/write_env.sh @@ -53,6 +53,7 @@ KEYCLOAK_REALM_URL=$(get_azd_value KEYCLOAK_REALM_URL) if [ -n "$KEYCLOAK_REALM_URL" ]; then echo "KEYCLOAK_REALM_URL=${KEYCLOAK_REALM_URL}" >> "$ENV_FILE_PATH" write_env_if_set KEYCLOAK_TOKEN_ISSUER + write_env_if_set KEYCLOAK_AGENT_REALM_URL fi # Entra proxy env vars (only if ENTRA_PROXY_AZURE_CLIENT_ID is set) diff --git a/keycloak/Dockerfile b/keycloak/Dockerfile index 9c1c3b2..1528c8e 100644 --- a/keycloak/Dockerfile +++ b/keycloak/Dockerfile @@ -22,5 +22,6 @@ ENTRYPOINT ["/opt/keycloak/bin/kc.sh"] # Start in dev mode with H2 database (still uses pre-built themes) # --proxy-headers=xforwarded tells Keycloak it's behind a reverse proxy that sets X-Forwarded-* headers # --hostname-strict=false allows dynamic hostname resolution from proxy headers +# --http-relative-path=/auth sets the base path so Keycloak serves all content under /auth/* # --import-realm imports the MCP realm on startup -CMD ["start-dev", "--http-port=8080", "--proxy-headers=xforwarded", "--hostname-strict=false", "--import-realm"] +CMD ["start-dev", "--http-port=8080", "--proxy-headers=xforwarded", "--hostname-strict=false", "--http-relative-path=/auth", "--import-realm"] diff --git a/keycloak/realm.json b/keycloak/realm.json index e75f802..a4ae9a4 100644 --- a/keycloak/realm.json +++ b/keycloak/realm.json @@ -60,14 +60,14 @@ "host-sending-registration-request-must-match": ["false"], "client-uris-must-match": ["true"], "trusted-hosts": [ - "localhost", - "127.0.0.1", - "172.17.0.1", - "host.docker.internal", - "vscode.dev", - "insiders.vscode.dev", - "code.visualstudio.com" - ] + "localhost", + "127.0.0.1", + "172.17.0.1", + "host.docker.internal", + "vscode.dev", + "insiders.vscode.dev", + "code.visualstudio.com" +] } }, { diff --git a/screenshots/kc-allow-1.jpg b/screenshots/kc-allow-1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d9d642ff6a11e25d94d2c7b02faae0e37301dfe7 GIT binary patch literal 96548 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�hUBOa68pdw1nzUweceCEo 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 literal 0 HcmV?d00001 diff --git a/screenshots/kc-chat-5.jpg b/screenshots/kc-chat-5.jpg new file mode 100644 index 0000000000000000000000000000000000000000..84c27aeff5e3df68dbd4eedb78e8d68d5cb7808d GIT binary patch literal 126301 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�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 Z7ymjJ|5^k8S_A)D1OG?X0Nvm7{|`*u{0IO5 literal 0 HcmV?d00001 diff --git a/screenshots/kc-redirect-3.jpg b/screenshots/kc-redirect-3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..74677942fa91ef905fda86bb2ca49034429204fe GIT binary patch literal 114710 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 literal 0 HcmV?d00001 diff --git a/screenshots/kc-signin-2.jpg b/screenshots/kc-signin-2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..048157ae68022ef57d1e4f893cc477017c026df1 GIT binary patch literal 146141 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 ZE4)g^M-OiQ Date: Tue, 16 Dec 2025 14:35:21 -0500 Subject: [PATCH 03/12] update with credit --- servers/keycloak_provider.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/servers/keycloak_provider.py b/servers/keycloak_provider.py index b66191b..b41b7cb 100644 --- a/servers/keycloak_provider.py +++ b/servers/keycloak_provider.py @@ -4,11 +4,10 @@ that integrates with Keycloak's OAuth 2.1 and OpenID Connect services, supporting Dynamic Client Registration (DCR) for seamless MCP client authentication. -This is vendored from the proposed FastMCP PR: +This is based on proposed FastMCP PR: https://github.com/jlowin/fastmcp/pull/1937 -Once merged into FastMCP, this file can be removed and replaced with: - from fastmcp.server.auth.providers.keycloak import KeycloakAuthProvider + """ from __future__ import annotations From 8e2df3377400139a32bd1fea435ec11ecd779e1a Mon Sep 17 00:00:00 2001 From: Gwyneth Pena-Siguenza Date: Tue, 16 Dec 2025 15:24:02 -0500 Subject: [PATCH 04/12] ruff run --- servers/auth_mcp.py | 11 +++++------ servers/keycloak_provider.py | 13 ++++++------- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/servers/auth_mcp.py b/servers/auth_mcp.py index ffe14fa..e1244fc 100644 --- a/servers/auth_mcp.py +++ b/servers/auth_mcp.py @@ -1,5 +1,7 @@ """Run with: cd servers && uvicorn auth_mcp:app --host 0.0.0.0 --port 8000""" +import base64 +import json import logging import os import uuid @@ -23,6 +25,7 @@ from opentelemetry.instrumentation.starlette import StarletteInstrumentor from rich.console import Console from rich.logging import RichHandler +from starlette.middleware.base import BaseHTTPMiddleware from starlette.responses import JSONResponse from opentelemetry_middleware import OpenTelemetryMiddleware @@ -247,10 +250,6 @@ async def health_check(_request): # Debug middleware to log token claims before auth -from starlette.middleware.base import BaseHTTPMiddleware -import base64 -import json - class TokenDebugMiddleware(BaseHTTPMiddleware): async def dispatch(self, request, call_next): auth_header = request.headers.get("Authorization", "") @@ -261,9 +260,9 @@ async def dispatch(self, request, call_next): payload = parts[1] payload += '=' * (4 - len(payload) % 4) claims = json.loads(base64.urlsafe_b64decode(payload)) - logger.info(f"=== TOKEN DEBUG ===") + logger.info("=== TOKEN DEBUG ===") logger.info(f"ALL CLAIMS: {claims}") - logger.info(f"===================") + logger.info("===================") except Exception as e: logger.error(f"Token decode error: {e}") return await call_next(request) diff --git a/servers/keycloak_provider.py b/servers/keycloak_provider.py index b41b7cb..111625b 100644 --- a/servers/keycloak_provider.py +++ b/servers/keycloak_provider.py @@ -12,19 +12,18 @@ from __future__ import annotations -import httpx -from pydantic import AnyHttpUrl -from starlette.responses import JSONResponse -from starlette.routing import Route +import base64 +import json +import httpx from fastmcp.server.auth import RemoteAuthProvider from fastmcp.server.auth.providers.jwt import JWTVerifier from fastmcp.utilities.logging import get_logger +from pydantic import AnyHttpUrl +from starlette.responses import JSONResponse +from starlette.routing import Route -import base64 -import json - def decode_jwt_debug(token): """Decode JWT payload for debugging""" try: From a9d7f3998405bae0a7c60f09fb48495c125abff9 Mon Sep 17 00:00:00 2001 From: Gwyneth Pena-Siguenza Date: Tue, 16 Dec 2025 15:25:45 -0500 Subject: [PATCH 05/12] ruff run again --- agents/agentframework_http.py | 2 +- servers/auth_mcp.py | 8 ++--- servers/keycloak_provider.py | 66 ++++++++++++++++------------------- 3 files changed, 35 insertions(+), 41 deletions(-) diff --git a/agents/agentframework_http.py b/agents/agentframework_http.py index e63b42e..ba36463 100644 --- a/agents/agentframework_http.py +++ b/agents/agentframework_http.py @@ -73,4 +73,4 @@ async def http_mcp_example() -> None: if __name__ == "__main__": - asyncio.run(http_mcp_example()) \ No newline at end of file + asyncio.run(http_mcp_example()) diff --git a/servers/auth_mcp.py b/servers/auth_mcp.py index e1244fc..27f72b5 100644 --- a/servers/auth_mcp.py +++ b/servers/auth_mcp.py @@ -117,7 +117,7 @@ required_scopes=[], # Audience should match the value in Keycloak's mcp:tools scope # Default to the base_url for local dev - audience=None + audience=None, ) logger.info("Using Keycloak DCR auth for server %s and realm %s", keycloak_base_url, KEYCLOAK_REALM_URL) else: @@ -248,7 +248,6 @@ async def health_check(_request): return JSONResponse({"status": "healthy", "service": "mcp-server"}) - # Debug middleware to log token claims before auth class TokenDebugMiddleware(BaseHTTPMiddleware): async def dispatch(self, request, call_next): @@ -256,9 +255,9 @@ async def dispatch(self, request, call_next): if auth_header.startswith("Bearer "): token = auth_header[7:] try: - parts = token.split('.') + parts = token.split(".") payload = parts[1] - payload += '=' * (4 - len(payload) % 4) + payload += "=" * (4 - len(payload) % 4) claims = json.loads(base64.urlsafe_b64decode(payload)) logger.info("=== TOKEN DEBUG ===") logger.info(f"ALL CLAIMS: {claims}") @@ -267,6 +266,7 @@ async def dispatch(self, request, call_next): logger.error(f"Token decode error: {e}") return await call_next(request) + # Configure Starlette middleware for OpenTelemetry # We must do this *after* defining all the MCP server routes app = mcp.http_app() diff --git a/servers/keycloak_provider.py b/servers/keycloak_provider.py index 111625b..7178b6b 100644 --- a/servers/keycloak_provider.py +++ b/servers/keycloak_provider.py @@ -27,14 +27,15 @@ def decode_jwt_debug(token): """Decode JWT payload for debugging""" try: - parts = token.split('.') + parts = token.split(".") payload = parts[1] - payload += '=' * (4 - len(payload) % 4) + payload += "=" * (4 - len(payload) % 4) decoded = base64.urlsafe_b64decode(payload) return json.loads(decoded) except Exception as e: return {"error": str(e)} + logger = get_logger(__name__) @@ -157,21 +158,18 @@ async def oauth_authorization_server_metadata(request): """Forward Keycloak's OAuth metadata with registration endpoint pointing to our minimal DCR proxy.""" try: async with httpx.AsyncClient() as client: - response = await client.get( - f"{self.realm_url}/.well-known/oauth-authorization-server" - ) + response = await client.get(f"{self.realm_url}/.well-known/oauth-authorization-server") response.raise_for_status() metadata = response.json() # Override registration_endpoint to use our minimal DCR proxy base_url = str(self.base_url).rstrip("/") metadata["registration_endpoint"] = f"{base_url}/register" - + # Override issuer to match our base URL (required for OAuth discovery) # VS Code validates that the issuer matches the authorization server URL # AnyHttpUrl adds trailing slash to root URLs, so we need to match that - - + # Also fix mtls_endpoint_aliases if present (VS Code may check this) if "mtls_endpoint_aliases" in metadata: metadata["mtls_endpoint_aliases"]["registration_endpoint"] = f"{base_url}/register" @@ -203,19 +201,22 @@ async def register_client_fix_auth_method(request): token_endpoint_auth_method field in the response. For MCP compatibility: - "client_secret_basic" -> "none" (public client, no secret needed) - Preserves "none" if requested - + All other fields are passed through unchanged. """ try: body = await request.body() - + # Log incoming request for debugging try: import json + request_data = json.loads(body) - logger.info(f"DCR request received: client_name={request_data.get('client_name')}, " - f"redirect_uris={request_data.get('redirect_uris')}, " - f"token_endpoint_auth_method={request_data.get('token_endpoint_auth_method')}") + logger.info( + f"DCR request received: client_name={request_data.get('client_name')}, " + f"redirect_uris={request_data.get('redirect_uris')}, " + f"token_endpoint_auth_method={request_data.get('token_endpoint_auth_method')}" + ) except Exception: logger.info(f"DCR request received (raw): {body[:500]}") @@ -224,16 +225,13 @@ async def register_client_fix_auth_method(request): forward_headers = { key: value for key, value in request.headers.items() - if key.lower() - not in {"host", "content-length", "transfer-encoding", "content-type"} + if key.lower() not in {"host", "content-length", "transfer-encoding", "content-type"} } forward_headers["Content-Type"] = "application/json" # Keycloak's standard DCR endpoint pattern - registration_endpoint = ( - f"{self.realm_url}/clients-registrations/openid-connect" - ) - + registration_endpoint = f"{self.realm_url}/clients-registrations/openid-connect" + logger.info(f"Forwarding DCR to Keycloak: {registration_endpoint}") response = await client.post( @@ -241,7 +239,7 @@ async def register_client_fix_auth_method(request): content=body, headers=forward_headers, ) - + logger.info(f"Keycloak DCR response status: {response.status_code}") if response.status_code != 201: @@ -260,17 +258,13 @@ async def register_client_fix_auth_method(request): client_info = response.json() original_auth_method = client_info.get("token_endpoint_auth_method") - logger.info( - f"Keycloak returned token_endpoint_auth_method: {original_auth_method}" - ) + logger.info(f"Keycloak returned token_endpoint_auth_method: {original_auth_method}") # MCP requires public clients (token_endpoint_auth_method: none) # Keycloak ignores the client's request and returns client_secret_basic # We fix this by always returning "none" for MCP clients if original_auth_method in ("client_secret_basic", "client_secret_post"): - logger.info( - f"Fixing token_endpoint_auth_method: {original_auth_method} -> none" - ) + logger.info(f"Fixing token_endpoint_auth_method: {original_auth_method} -> none") client_info["token_endpoint_auth_method"] = "none" logger.info( @@ -304,18 +298,18 @@ async def debug_token(request): auth_header = request.headers.get("Authorization", "") if not auth_header.startswith("Bearer "): return JSONResponse({"error": "No bearer token"}, status_code=400) - + token = auth_header[7:] claims = decode_jwt_debug(token) - - return JSONResponse({ - "token_claims": claims, - "expected_issuer": self.realm_url, - "expected_audience": str(self.base_url), - }) - routes.append( - Route("/debug-token", endpoint=debug_token, methods=["GET", "POST"]) - ) + return JSONResponse( + { + "token_claims": claims, + "expected_issuer": self.realm_url, + "expected_audience": str(self.base_url), + } + ) + + routes.append(Route("/debug-token", endpoint=debug_token, methods=["GET", "POST"])) return routes From a8d381f7ea8196954d282c374da39ae319f874f4 Mon Sep 17 00:00:00 2001 From: Gwyneth Pena-Siguenza Date: Wed, 17 Dec 2025 16:16:09 -0500 Subject: [PATCH 06/12] attemtp to get audience validation --- .vscode/mcp.json | 5 +- agents/keycloak_auth.py | 121 ----------------------- infra/http-routes.bicep | 7 +- infra/main.bicep | 1 - infra/server.bicep | 5 - keycloak/realm.json | 38 ++++++-- servers/auth_mcp.py | 31 ++++-- servers/keycloak_provider.py | 181 ++++++++++------------------------- 8 files changed, 106 insertions(+), 283 deletions(-) delete mode 100644 agents/keycloak_auth.py diff --git a/.vscode/mcp.json b/.vscode/mcp.json index fa3bade..c66b615 100644 --- a/.vscode/mcp.json +++ b/.vscode/mcp.json @@ -28,10 +28,7 @@ "servers/basic_mcp_stdio.py" ] }, - "my-mcp-server-60626805": { - "url": "https://mcproutes.whitetree-5dc0246f.eastus2.azurecontainerapps.io/mcp", - "type": "http" - } + }, "inputs": [] } \ No newline at end of file diff --git a/agents/keycloak_auth.py b/agents/keycloak_auth.py deleted file mode 100644 index 8506ce6..0000000 --- a/agents/keycloak_auth.py +++ /dev/null @@ -1,121 +0,0 @@ -""" -Keycloak authentication helpers for MCP agents. - -Provides OAuth2 client credentials flow authentication via Keycloak's -Dynamic Client Registration (DCR) endpoint. - -Usage: - from keycloak_auth import get_auth_headers - - headers = await get_auth_headers(keycloak_realm_url) - # Returns {"Authorization": "Bearer "} or None if no URL provided -""" - -from __future__ import annotations - -import logging -from datetime import datetime - -import httpx - -logger = logging.getLogger(__name__) - - -async def register_client_via_dcr(keycloak_realm_url: str, client_name_prefix: str = "agent") -> tuple[str, str]: - """ - Register a new client dynamically using Keycloak's DCR endpoint. - - Args: - keycloak_realm_url: The Keycloak realm URL (e.g., http://localhost:8080/realms/myrealm) - Make sure to use direct container URL, not route. - client_name_prefix: Prefix for the generated client name - - Returns: - Tuple of (client_id, client_secret) - - Raises: - RuntimeError: If DCR registration fails - """ - dcr_url = f"{keycloak_realm_url}/clients-registrations/openid-connect" - logger.info("📝 Registering client via DCR...") - - async with httpx.AsyncClient() as http_client: - response = await http_client.post( - dcr_url, - json={ - "client_name": f"{client_name_prefix}-{datetime.now().strftime('%Y%m%d-%H%M%S')}", - "grant_types": ["client_credentials"], - "token_endpoint_auth_method": "client_secret_basic", - }, - headers={"Content-Type": "application/json"}, - ) - - if response.status_code not in (200, 201): - raise RuntimeError( - f"DCR registration failed at {dcr_url}: status={response.status_code}, response={response.text}" - ) - - data = response.json() - logger.info(f"✅ Registered client: {data['client_id'][:20]}...") - return data["client_id"], data["client_secret"] - - -async def get_keycloak_token(keycloak_realm_url: str, client_id: str, client_secret: str) -> str: - """ - Get an access token from Keycloak using client_credentials grant. - - Args: - keycloak_realm_url: The Keycloak realm URL - client_id: The OAuth client ID - client_secret: The OAuth client secret - - Returns: - The access token string - - Raises: - RuntimeError: If token request fails - """ - token_url = f"{keycloak_realm_url}/protocol/openid-connect/token" - logger.info("🔑 Getting access token from Keycloak...") - - async with httpx.AsyncClient() as http_client: - response = await http_client.post( - token_url, - data={ - "grant_type": "client_credentials", - "client_id": client_id, - "client_secret": client_secret, - }, - headers={"Content-Type": "application/x-www-form-urlencoded"}, - ) - - if response.status_code != 200: - raise RuntimeError( - f"Token request failed at {token_url}: status={response.status_code}, response={response.text}" - ) - - token_data = response.json() - logger.info(f"✅ Got access token (expires in {token_data.get('expires_in', '?')}s)") - return token_data["access_token"] - - -async def get_auth_headers(keycloak_realm_url: str | None, client_name_prefix: str = "agent") -> dict[str, str] | None: - """ - Get authorization headers if Keycloak is configured. - - This is the main entry point for agents that need OAuth authentication. - It handles the full flow: DCR registration -> token acquisition -> headers. - - Args: - keycloak_realm_url: The Keycloak realm URL, or None to skip auth - client_name_prefix: Prefix for the dynamically registered client name - - Returns: - {"Authorization": "Bearer "} if keycloak_realm_url is set, None otherwise - """ - if not keycloak_realm_url: - return None - - client_id, client_secret = await register_client_via_dcr(keycloak_realm_url, client_name_prefix) - access_token = await get_keycloak_token(keycloak_realm_url, client_id, client_secret) - return {"Authorization": f"Bearer {access_token}"} diff --git a/infra/http-routes.bicep b/infra/http-routes.bicep index fc4ba48..b139028 100644 --- a/infra/http-routes.bicep +++ b/infra/http-routes.bicep @@ -29,8 +29,6 @@ resource httpRouteConfig 'Microsoft.App/managedEnvironments/httpRouteConfigs@202 parent: containerEnv properties: { rules: [ - // Route /auth/* to Keycloak (Keycloak is configured with --http-relative-path=/auth) - // Using pathSeparatedPrefix ensures /auth doesn't match /authentication { description: 'Keycloak Authentication Server' routes: [ @@ -47,7 +45,6 @@ resource httpRouteConfig 'Microsoft.App/managedEnvironments/httpRouteConfigs@202 } ] } - // Route everything else to MCP server (catch-all) { description: 'MCP Expenses Server' routes: [ @@ -55,9 +52,7 @@ resource httpRouteConfig 'Microsoft.App/managedEnvironments/httpRouteConfigs@202 match: { prefix: '/' } - action: { - prefixRewrite: '/' - } + action: {} } ] targets: [ diff --git a/infra/main.bicep b/infra/main.bicep index d0d98bf..caf5b69 100644 --- a/infra/main.bicep +++ b/infra/main.bicep @@ -763,7 +763,6 @@ module server 'server.bicep' = { exists: serverExists // Keycloak authentication configuration (only when enabled) keycloakRealmUrl: useKeycloak ? '${keycloak!.outputs.uri}/auth/realms/${keycloakRealmName}' : '' - keycloakTokenIssuer: useKeycloak ? '${keycloakMcpServerBaseUrl}/auth/realms/${keycloakRealmName}' : '' keycloakMcpServerBaseUrl: useKeycloak ? keycloakMcpServerBaseUrl : '' keycloakMcpServerAudience: keycloakMcpServerAudience // Azure/Entra ID OAuth Proxy authentication configuration (only when enabled) diff --git a/infra/server.bicep b/infra/server.bicep index d78d590..bc8084a 100644 --- a/infra/server.bicep +++ b/infra/server.bicep @@ -22,7 +22,6 @@ param applicationInsightsConnectionString string = '' ]) param openTelemetryPlatform string = 'appinsights' param keycloakRealmUrl string = '' -param keycloakTokenIssuer string = '' param keycloakMcpServerAudience string = 'mcp-server' param keycloakMcpServerBaseUrl string = '' param entraProxyClientId string = '' @@ -112,10 +111,6 @@ var keycloakEnv = !empty(keycloakRealmUrl) ? [ name: 'KEYCLOAK_REALM_URL' value: keycloakRealmUrl } - { - name: 'KEYCLOAK_TOKEN_ISSUER' - value: !empty(keycloakTokenIssuer) ? keycloakTokenIssuer : keycloakRealmUrl - } { name: 'KEYCLOAK_MCP_SERVER_AUDIENCE' value: keycloakMcpServerAudience diff --git a/keycloak/realm.json b/keycloak/realm.json index a4ae9a4..bfe19b6 100644 --- a/keycloak/realm.json +++ b/keycloak/realm.json @@ -14,6 +14,37 @@ "accessCodeLifespan": 60, "accessCodeLifespanUserAction": 300, "accessCodeLifespanLogin": 1800, + "defaultDefaultClientScopes": [ + "openid", + "profile", + "email", + "mcp:tools" + ], + "clientScopes": [ + { + "name": "mcp:tools", + "description": "MCP tools scope with audience mapper for MCP server resource", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "true", + "display.on.consent.screen": "true", + "consent.screen.text": "Access MCP tools" + }, + "protocolMappers": [ + { + "name": "mcp-server-audience", + "protocol": "openid-connect", + "protocolMapper": "oidc-audience-mapper", + "consentRequired": false, + "config": { + "included.custom.audience": "mcp-server", + "id.token.claim": "false", + "access.token.claim": "true" + } + } + ] + } + ], "clients": [ { "clientId": "vscode-mcp-client", @@ -70,12 +101,7 @@ ] } }, - { - "name": "Consent Required", - "providerId": "consent-required", - "subType": "anonymous", - "config": {} - }, + { "name": "Max Clients Limit", "providerId": "max-clients", diff --git a/servers/auth_mcp.py b/servers/auth_mcp.py index dd14a07..fc7a8a7 100644 --- a/servers/auth_mcp.py +++ b/servers/auth_mcp.py @@ -103,24 +103,26 @@ ) elif mcp_auth_provider == "keycloak": # Keycloak authentication using KeycloakAuthProvider with DCR support - # This enables VS Code and other MCP clients to dynamically register and authenticate KEYCLOAK_REALM_URL = os.environ["KEYCLOAK_REALM_URL"] - KEYCLOAK_TOKEN_ISSUER = os.getenv("KEYCLOAK_TOKEN_ISSUER", KEYCLOAK_REALM_URL) - # Use KEYCLOAK_MCP_SERVER_BASE_URL if provided, otherwise default based on environment keycloak_base_url = os.getenv("KEYCLOAK_MCP_SERVER_BASE_URL") if not keycloak_base_url: keycloak_base_url = "http://localhost:8000" if not RUNNING_IN_PRODUCTION else None if not keycloak_base_url: raise ValueError("KEYCLOAK_MCP_SERVER_BASE_URL must be set in production") + + # Get audience from env (optional - validates aud claim if set) + keycloak_audience = os.getenv("KEYCLOAK_MCP_SERVER_AUDIENCE") or None + auth = KeycloakAuthProvider( realm_url=KEYCLOAK_REALM_URL, base_url=keycloak_base_url, required_scopes=[], - # Audience should match the value in Keycloak's mcp:tools scope - # Default to the base_url for local dev - audience=None, + audience=keycloak_audience, + ) + logger.info( + "Using Keycloak DCR auth for server %s and realm %s (audience=%s)", + keycloak_base_url, KEYCLOAK_REALM_URL, keycloak_audience ) - logger.info("Using Keycloak DCR auth for server %s and realm %s", keycloak_base_url, KEYCLOAK_REALM_URL) else: logger.error("No authentication configured for MCP server, exiting.") raise SystemExit(1) @@ -252,7 +254,10 @@ async def health_check(_request): # Debug middleware to log token claims before auth class TokenDebugMiddleware(BaseHTTPMiddleware): async def dispatch(self, request, call_next): + path = request.url.path + method = request.method auth_header = request.headers.get("Authorization", "") + if auth_header.startswith("Bearer "): token = auth_header[7:] try: @@ -260,11 +265,17 @@ async def dispatch(self, request, call_next): payload = parts[1] payload += "=" * (4 - len(payload) % 4) claims = json.loads(base64.urlsafe_b64decode(payload)) - logger.info("=== TOKEN DEBUG ===") - logger.info(f"ALL CLAIMS: {claims}") + logger.info(f"=== TOKEN DEBUG [{method} {path}] ===") + logger.info(f"iss: {claims.get('iss')}") + logger.info(f"aud: {claims.get('aud')}") + logger.info(f"azp: {claims.get('azp')}") + logger.info(f"scope: {claims.get('scope')}") + logger.info(f"exp: {claims.get('exp')}") logger.info("===================") except Exception as e: - logger.error(f"Token decode error: {e}") + logger.error(f"Token decode error [{method} {path}]: {e}") + else: + logger.info(f"=== NO BEARER TOKEN [{method} {path}] auth_header={auth_header[:50] if auth_header else 'empty'} ===") return await call_next(request) diff --git a/servers/keycloak_provider.py b/servers/keycloak_provider.py index 7178b6b..a45a1b7 100644 --- a/servers/keycloak_provider.py +++ b/servers/keycloak_provider.py @@ -1,90 +1,60 @@ """Keycloak authentication provider for FastMCP. -This module provides KeycloakAuthProvider - a complete authentication solution -that integrates with Keycloak's OAuth 2.1 and OpenID Connect services, supporting -Dynamic Client Registration (DCR) for seamless MCP client authentication. - -This is based on proposed FastMCP PR: -https://github.com/jlowin/fastmcp/pull/1937 - +This module provides KeycloakAuthProvider - a complete authentication solution that integrates +with Keycloak's OAuth 2.1 and OpenID Connect services, supporting Dynamic Client Registration (DCR) +for seamless MCP client authentication. +Based on proposed FastMCP PR: https://github.com/jlowin/fastmcp/pull/1937 """ from __future__ import annotations -import base64 -import json - import httpx -from fastmcp.server.auth import RemoteAuthProvider -from fastmcp.server.auth.providers.jwt import JWTVerifier -from fastmcp.utilities.logging import get_logger from pydantic import AnyHttpUrl from starlette.responses import JSONResponse from starlette.routing import Route - -def decode_jwt_debug(token): - """Decode JWT payload for debugging""" - try: - parts = token.split(".") - payload = parts[1] - payload += "=" * (4 - len(payload) % 4) - decoded = base64.urlsafe_b64decode(payload) - return json.loads(decoded) - except Exception as e: - return {"error": str(e)} - +from fastmcp.server.auth import RemoteAuthProvider +from fastmcp.server.auth.providers.jwt import JWTVerifier +from fastmcp.utilities.logging import get_logger logger = get_logger(__name__) class KeycloakAuthProvider(RemoteAuthProvider): - """Keycloak authentication provider with minimal DCR proxy for MCP compatibility. + """Keycloak authentication provider with Dynamic Client Registration (DCR) support. - This provider integrates FastMCP with Keycloak using a **minimal proxy architecture** - that solves a specific MCP compatibility issue. The proxy only intercepts DCR - responses to fix a single field - all other OAuth operations go directly to Keycloak. + This provider integrates FastMCP with Keycloak using a **minimal proxy architecture** that + solves a specific MCP compatibility issue. The proxy only intercepts DCR responses to fix + a single field - all other OAuth operations go directly to Keycloak. ## Why a Minimal Proxy is Needed - Keycloak has a known limitation with Dynamic Client Registration: it ignores - the client's requested `token_endpoint_auth_method` parameter and always returns - `client_secret_basic`, even when clients explicitly request `client_secret_post` - (which MCP requires per RFC 9110). + Keycloak has a known limitation with Dynamic Client Registration: it ignores the client's + requested `token_endpoint_auth_method` parameter and always returns `client_secret_basic`, + even when clients explicitly request `client_secret_post` (which MCP requires per RFC 9110). This minimal proxy works around this by: 1. Advertising itself as the authorization server to MCP clients 2. Forwarding Keycloak's OAuth metadata with a custom registration endpoint - 3. Intercepting DCR responses from Keycloak and fixing only the - `token_endpoint_auth_method` field + 3. Intercepting DCR responses from Keycloak and fixing only the `token_endpoint_auth_method` field **What the minimal proxy does NOT intercept:** - Authorization flows (users authenticate directly with Keycloak) - Token issuance (tokens come directly from Keycloak) - Token validation (JWT signatures verified against Keycloak's keys) - ## Setup Requirements - - 1. Configure Keycloak realm with Dynamic Client Registration enabled - 2. Configure trusted hosts policy to allow client redirect URIs - 3. Set `client-uris-must-match` to `false` for dynamic redirect URIs - 4. Add test users to the realm for authentication - Example: ```python from fastmcp import FastMCP from keycloak_provider import KeycloakAuthProvider - # Create Keycloak provider (JWT verifier created automatically) keycloak_auth = KeycloakAuthProvider( - realm_url="http://localhost:8080/realms/mcp", + realm_url="http://localhost:8080/realms/fastmcp", base_url="http://localhost:8000", - required_scopes=["openid", "mcp:tools"], - audience="http://localhost:8000", # Should match Keycloak's audience mapper + required_scopes=["openid", "profile"], ) - # Use with FastMCP mcp = FastMCP("My App", auth=keycloak_auth) ``` """ @@ -92,25 +62,22 @@ class KeycloakAuthProvider(RemoteAuthProvider): def __init__( self, *, - realm_url: str | AnyHttpUrl, - base_url: str | AnyHttpUrl, + realm_url: AnyHttpUrl | str, + base_url: AnyHttpUrl | str, required_scopes: list[str] | None = None, audience: str | list[str] | None = None, token_verifier: JWTVerifier | None = None, ): - """Initialize the Keycloak authentication provider. + """Initialize Keycloak metadata provider. Args: - realm_url: Full URL to the Keycloak realm (e.g., - "https://keycloak.example.com/realms/myrealm") + realm_url: Your Keycloak realm URL (e.g., "https://keycloak.example.com/realms/myrealm") base_url: Public URL of this FastMCP server required_scopes: Optional list of scopes to require for all requests - audience: Optional audience(s) for JWT validation. If not specified - and no custom verifier is provided, audience validation is disabled. - For production use, it's recommended to set this to your resource - server identifier or base_url. - token_verifier: Optional token verifier. If None, creates JWT verifier - for Keycloak + audience: Optional audience(s) for JWT validation. If not specified and no custom + verifier is provided, audience validation is disabled. For production use, + it's recommended to set this to your resource server identifier or base_url. + token_verifier: Optional token verifier. If None, creates JWT verifier for Keycloak """ self.base_url = AnyHttpUrl(str(base_url).rstrip("/")) self.realm_url = str(realm_url).rstrip("/") @@ -158,7 +125,9 @@ async def oauth_authorization_server_metadata(request): """Forward Keycloak's OAuth metadata with registration endpoint pointing to our minimal DCR proxy.""" try: async with httpx.AsyncClient() as client: - response = await client.get(f"{self.realm_url}/.well-known/oauth-authorization-server") + response = await client.get( + f"{self.realm_url}/.well-known/oauth-authorization-server" + ) response.raise_for_status() metadata = response.json() @@ -166,14 +135,6 @@ async def oauth_authorization_server_metadata(request): base_url = str(self.base_url).rstrip("/") metadata["registration_endpoint"] = f"{base_url}/register" - # Override issuer to match our base URL (required for OAuth discovery) - # VS Code validates that the issuer matches the authorization server URL - # AnyHttpUrl adds trailing slash to root URLs, so we need to match that - - # Also fix mtls_endpoint_aliases if present (VS Code may check this) - if "mtls_endpoint_aliases" in metadata: - metadata["mtls_endpoint_aliases"]["registration_endpoint"] = f"{base_url}/register" - return JSONResponse(metadata) except Exception as e: logger.error(f"Failed to fetch Keycloak metadata: {e}") @@ -198,80 +159,59 @@ async def register_client_fix_auth_method(request): """Minimal DCR proxy that fixes token_endpoint_auth_method in Keycloak's client registration response. Forwards registration requests to Keycloak's DCR endpoint and modifies only the - token_endpoint_auth_method field in the response. For MCP compatibility: - - "client_secret_basic" -> "none" (public client, no secret needed) - - Preserves "none" if requested - - All other fields are passed through unchanged. + token_endpoint_auth_method field in the response, changing "client_secret_basic" + to "client_secret_post" for MCP compatibility. All other fields are passed through + unchanged. """ try: body = await request.body() - # Log incoming request for debugging - try: - import json - - request_data = json.loads(body) - logger.info( - f"DCR request received: client_name={request_data.get('client_name')}, " - f"redirect_uris={request_data.get('redirect_uris')}, " - f"token_endpoint_auth_method={request_data.get('token_endpoint_auth_method')}" - ) - except Exception: - logger.info(f"DCR request received (raw): {body[:500]}") - # Forward to Keycloak's DCR endpoint async with httpx.AsyncClient(timeout=10.0) as client: forward_headers = { key: value for key, value in request.headers.items() - if key.lower() not in {"host", "content-length", "transfer-encoding", "content-type"} + if key.lower() + not in {"host", "content-length", "transfer-encoding"} } forward_headers["Content-Type"] = "application/json" # Keycloak's standard DCR endpoint pattern - registration_endpoint = f"{self.realm_url}/clients-registrations/openid-connect" - - logger.info(f"Forwarding DCR to Keycloak: {registration_endpoint}") - + registration_endpoint = ( + f"{self.realm_url}/clients-registrations/openid-connect" + ) response = await client.post( registration_endpoint, content=body, headers=forward_headers, ) - logger.info(f"Keycloak DCR response status: {response.status_code}") - if response.status_code != 201: - error_body = response.text - logger.error(f"Keycloak DCR failed: {response.status_code} - {error_body}") - try: - error_json = response.json() - except Exception: - error_json = {"error": "registration_failed", "error_description": error_body} return JSONResponse( - error_json, + response.json() + if response.headers.get("content-type", "").startswith( + "application/json" + ) + else {"error": "registration_failed"}, status_code=response.status_code, ) # Fix token_endpoint_auth_method for MCP compatibility client_info = response.json() original_auth_method = client_info.get("token_endpoint_auth_method") + logger.debug( + f"Received token_endpoint_auth_method from Keycloak: {original_auth_method}" + ) - logger.info(f"Keycloak returned token_endpoint_auth_method: {original_auth_method}") - - # MCP requires public clients (token_endpoint_auth_method: none) - # Keycloak ignores the client's request and returns client_secret_basic - # We fix this by always returning "none" for MCP clients - if original_auth_method in ("client_secret_basic", "client_secret_post"): - logger.info(f"Fixing token_endpoint_auth_method: {original_auth_method} -> none") - client_info["token_endpoint_auth_method"] = "none" + if original_auth_method == "client_secret_basic": + logger.debug( + "Fixing token_endpoint_auth_method: client_secret_basic -> client_secret_post" + ) + client_info["token_endpoint_auth_method"] = "client_secret_post" - logger.info( - f"Returning to client: client_id={client_info.get('client_id')}, " - f"token_endpoint_auth_method={client_info.get('token_endpoint_auth_method')}" + logger.debug( + f"Returning token_endpoint_auth_method to client: {client_info.get('token_endpoint_auth_method')}" ) - return JSONResponse(client_info, status_code=201) except Exception as e: @@ -293,23 +233,4 @@ async def register_client_fix_auth_method(request): ) ) - async def debug_token(request): - """Debug endpoint to decode and inspect JWT tokens""" - auth_header = request.headers.get("Authorization", "") - if not auth_header.startswith("Bearer "): - return JSONResponse({"error": "No bearer token"}, status_code=400) - - token = auth_header[7:] - claims = decode_jwt_debug(token) - - return JSONResponse( - { - "token_claims": claims, - "expected_issuer": self.realm_url, - "expected_audience": str(self.base_url), - } - ) - - routes.append(Route("/debug-token", endpoint=debug_token, methods=["GET", "POST"])) - return routes From 1e8d55c732ae1df22d4775905668250c0f8bc9a2 Mon Sep 17 00:00:00 2001 From: Gwyneth Pena-Siguenza Date: Wed, 17 Dec 2025 23:50:15 -0500 Subject: [PATCH 07/12] Refactor Keycloak auth with scope injection and proxying --- .vscode/mcp.json | 5 +- keycloak/Dockerfile | 3 +- keycloak/realm.json | 51 ++++++++++++----- servers/auth_mcp.py | 37 ++++++++---- servers/keycloak_provider.py | 105 +++++++++++++++++++++++++---------- 5 files changed, 146 insertions(+), 55 deletions(-) diff --git a/.vscode/mcp.json b/.vscode/mcp.json index c66b615..4ec147e 100644 --- a/.vscode/mcp.json +++ b/.vscode/mcp.json @@ -28,7 +28,10 @@ "servers/basic_mcp_stdio.py" ] }, - + "my-mcp-server-f62afe3c": { + "url": "https://mcproutes.bluetree-2d3ef102.eastus2.azurecontainerapps.io/mcp", + "type": "http" + } }, "inputs": [] } \ No newline at end of file diff --git a/keycloak/Dockerfile b/keycloak/Dockerfile index 1528c8e..8184dd0 100644 --- a/keycloak/Dockerfile +++ b/keycloak/Dockerfile @@ -24,4 +24,5 @@ ENTRYPOINT ["/opt/keycloak/bin/kc.sh"] # --hostname-strict=false allows dynamic hostname resolution from proxy headers # --http-relative-path=/auth sets the base path so Keycloak serves all content under /auth/* # --import-realm imports the MCP realm on startup -CMD ["start-dev", "--http-port=8080", "--proxy-headers=xforwarded", "--hostname-strict=false", "--http-relative-path=/auth", "--import-realm"] +# --import-strategy=overwrite-existing ensures realm.json changes are applied even if the realm exists +CMD ["start-dev", "--http-port=8080", "--proxy-headers=xforwarded", "--hostname-strict=false", "--http-relative-path=/auth", "--import-realm", "--import-strategy=overwrite-existing"] \ No newline at end of file diff --git a/keycloak/realm.json b/keycloak/realm.json index bfe19b6..95a4d1b 100644 --- a/keycloak/realm.json +++ b/keycloak/realm.json @@ -16,14 +16,45 @@ "accessCodeLifespanLogin": 1800, "defaultDefaultClientScopes": [ "openid", - "profile", - "email", - "mcp:tools" + "mcp:access" ], "clientScopes": [ { - "name": "mcp:tools", - "description": "MCP tools scope with audience mapper for MCP server resource", + "name": "openid", + "description": "OpenID Connect scope with MCP server audience mapper", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "true", + "display.on.consent.screen": "false" + }, + "protocolMappers": [ + { + "name": "mcp-server-audience", + "protocol": "openid-connect", + "protocolMapper": "oidc-audience-mapper", + "consentRequired": false, + "config": { + "included.custom.audience": "mcp-server", + "id.token.claim": "false", + "access.token.claim": "true" + } + }, + { + "name": "sub", + "protocol": "openid-connect", + "protocolMapper": "oidc-sub-mapper", + "consentRequired": false, + "config": { + "id.token.claim": "true", + "access.token.claim": "true", + "userinfo.token.claim": "true" + } + } + ] + }, + { + "name": "mcp:access", + "description": "MCP tools scope for accessing MCP server tools", "protocol": "openid-connect", "attributes": { "include.in.token.scope": "true", @@ -32,7 +63,7 @@ }, "protocolMappers": [ { - "name": "mcp-server-audience", + "name": "mcp-server-audience-tools", "protocol": "openid-connect", "protocolMapper": "oidc-audience-mapper", "consentRequired": false, @@ -130,14 +161,6 @@ ] } }, - { - "name": "Allowed Client Scopes", - "providerId": "allowed-client-templates", - "subType": "anonymous", - "config": { - "allow-default-scopes": ["true"] - } - }, { "name": "Allowed Protocol Mapper Types", "providerId": "allowed-protocol-mappers", diff --git a/servers/auth_mcp.py b/servers/auth_mcp.py index fc7a8a7..b3174f8 100644 --- a/servers/auth_mcp.py +++ b/servers/auth_mcp.py @@ -104,24 +104,24 @@ elif mcp_auth_provider == "keycloak": # Keycloak authentication using KeycloakAuthProvider with DCR support KEYCLOAK_REALM_URL = os.environ["KEYCLOAK_REALM_URL"] - keycloak_base_url = os.getenv("KEYCLOAK_MCP_SERVER_BASE_URL") - if not keycloak_base_url: - keycloak_base_url = "http://localhost:8000" if not RUNNING_IN_PRODUCTION else None - if not keycloak_base_url: - raise ValueError("KEYCLOAK_MCP_SERVER_BASE_URL must be set in production") + if RUNNING_IN_PRODUCTION: + keycloak_base_url = os.environ["KEYCLOAK_MCP_SERVER_BASE_URL"] + else: + keycloak_base_url = "http://localhost:8000" - # Get audience from env (optional - validates aud claim if set) - keycloak_audience = os.getenv("KEYCLOAK_MCP_SERVER_AUDIENCE") or None + keycloak_audience = os.getenv("KEYCLOAK_MCP_SERVER_AUDIENCE") or "mcp-server" auth = KeycloakAuthProvider( realm_url=KEYCLOAK_REALM_URL, base_url=keycloak_base_url, - required_scopes=[], + required_scopes=["mcp:access"], audience=keycloak_audience, ) logger.info( "Using Keycloak DCR auth for server %s and realm %s (audience=%s)", - keycloak_base_url, KEYCLOAK_REALM_URL, keycloak_audience + keycloak_base_url, + KEYCLOAK_REALM_URL, + keycloak_audience, ) else: logger.error("No authentication configured for MCP server, exiting.") @@ -251,13 +251,25 @@ async def health_check(_request): return JSONResponse({"status": "healthy", "service": "mcp-server"}) +# Debug middleware to log ALL incoming requests +class RequestDebugMiddleware(BaseHTTPMiddleware): + async def dispatch(self, request, call_next): + path = request.url.path + method = request.method + logger.info(f"=== INCOMING REQUEST: {method} {path} ===") + logger.info(f"Headers: {dict(request.headers)}") + response = await call_next(request) + logger.info(f"=== RESPONSE: {response.status_code} for {method} {path} ===") + return response + + # Debug middleware to log token claims before auth class TokenDebugMiddleware(BaseHTTPMiddleware): async def dispatch(self, request, call_next): path = request.url.path method = request.method auth_header = request.headers.get("Authorization", "") - + if auth_header.startswith("Bearer "): token = auth_header[7:] try: @@ -275,12 +287,15 @@ async def dispatch(self, request, call_next): except Exception as e: logger.error(f"Token decode error [{method} {path}]: {e}") else: - logger.info(f"=== NO BEARER TOKEN [{method} {path}] auth_header={auth_header[:50] if auth_header else 'empty'} ===") + logger.info( + f"=== NO BEARER TOKEN [{method} {path}] auth_header={auth_header[:50] if auth_header else 'empty'} ===" + ) return await call_next(request) # Configure Starlette middleware for OpenTelemetry # We must do this *after* defining all the MCP server routes app = mcp.http_app() +app.add_middleware(RequestDebugMiddleware) app.add_middleware(TokenDebugMiddleware) StarletteInstrumentor.instrument_app(app) diff --git a/servers/keycloak_provider.py b/servers/keycloak_provider.py index a45a1b7..6d460f2 100644 --- a/servers/keycloak_provider.py +++ b/servers/keycloak_provider.py @@ -9,14 +9,16 @@ from __future__ import annotations -import httpx -from pydantic import AnyHttpUrl -from starlette.responses import JSONResponse -from starlette.routing import Route +import json +from urllib.parse import urlencode +import httpx from fastmcp.server.auth import RemoteAuthProvider from fastmcp.server.auth.providers.jwt import JWTVerifier from fastmcp.utilities.logging import get_logger +from pydantic import AnyHttpUrl +from starlette.responses import JSONResponse, RedirectResponse +from starlette.routing import Route logger = get_logger(__name__) @@ -125,15 +127,14 @@ async def oauth_authorization_server_metadata(request): """Forward Keycloak's OAuth metadata with registration endpoint pointing to our minimal DCR proxy.""" try: async with httpx.AsyncClient() as client: - response = await client.get( - f"{self.realm_url}/.well-known/oauth-authorization-server" - ) + response = await client.get(f"{self.realm_url}/.well-known/oauth-authorization-server") response.raise_for_status() metadata = response.json() # Override registration_endpoint to use our minimal DCR proxy base_url = str(self.base_url).rstrip("/") metadata["registration_endpoint"] = f"{base_url}/register" + metadata["authorization_endpoint"] = f"{base_url}/authorize" return JSONResponse(metadata) except Exception as e: @@ -156,30 +157,49 @@ async def oauth_authorization_server_metadata(request): ) async def register_client_fix_auth_method(request): - """Minimal DCR proxy that fixes token_endpoint_auth_method in Keycloak's client registration response. + """Minimal DCR proxy that fixes token_endpoint_auth_method and scope in Keycloak's client registration response. - Forwards registration requests to Keycloak's DCR endpoint and modifies only the - token_endpoint_auth_method field in the response, changing "client_secret_basic" - to "client_secret_post" for MCP compatibility. All other fields are passed through - unchanged. + Forwards registration requests to Keycloak's DCR endpoint and modifies: + 1. token_endpoint_auth_method: "client_secret_basic" -> "client_secret_post" for MCP compatibility + 2. scope: Ensures default scopes (openid, profile, email, mcp:tools) are included so audience mapper runs + + All other fields are passed through unchanged. """ try: body = await request.body() + logger.info(f"DCR request body (original): {body.decode('utf-8')}") + + # Inject default scopes to ensure audience mapper runs + # This is required because VS Code's MCP client doesn't request scopes during registration + try: + client_metadata = json.loads(body) + # Ensure we have at least openid scope which contains the audience mapper + current_scopes = client_metadata.get("scope", "").split() + if "openid" not in current_scopes: + current_scopes.append("openid") + # Add other useful scopes + for scope in ["mcp:access"]: + if scope not in current_scopes: + current_scopes.append(scope) + + client_metadata["scope"] = " ".join(current_scopes) + body = json.dumps(client_metadata).encode("utf-8") + logger.info(f"DCR request body (modified): {body.decode('utf-8')}") + except Exception as e: + logger.warning(f"Failed to inject scopes into DCR request: {e}") # Forward to Keycloak's DCR endpoint async with httpx.AsyncClient(timeout=10.0) as client: forward_headers = { key: value for key, value in request.headers.items() - if key.lower() - not in {"host", "content-length", "transfer-encoding"} + if key.lower() not in {"host", "content-length", "transfer-encoding", "content-type"} } forward_headers["Content-Type"] = "application/json" # Keycloak's standard DCR endpoint pattern - registration_endpoint = ( - f"{self.realm_url}/clients-registrations/openid-connect" - ) + registration_endpoint = f"{self.realm_url}/clients-registrations/openid-connect" + logger.info(f"DCR proxy forwarding to: {registration_endpoint}") response = await client.post( registration_endpoint, content=body, @@ -187,33 +207,27 @@ async def register_client_fix_auth_method(request): ) if response.status_code != 201: + logger.error(f"DCR failed with status {response.status_code}: {response.text}") return JSONResponse( response.json() - if response.headers.get("content-type", "").startswith( - "application/json" - ) - else {"error": "registration_failed"}, + if response.headers.get("content-type", "").startswith("application/json") + else {"error": "registration_failed", "status": response.status_code}, status_code=response.status_code, ) # Fix token_endpoint_auth_method for MCP compatibility client_info = response.json() original_auth_method = client_info.get("token_endpoint_auth_method") - logger.debug( - f"Received token_endpoint_auth_method from Keycloak: {original_auth_method}" - ) + logger.debug(f"Received token_endpoint_auth_method from Keycloak: {original_auth_method}") if original_auth_method == "client_secret_basic": - logger.debug( - "Fixing token_endpoint_auth_method: client_secret_basic -> client_secret_post" - ) + logger.debug("Fixing token_endpoint_auth_method: client_secret_basic -> client_secret_post") client_info["token_endpoint_auth_method"] = "client_secret_post" logger.debug( f"Returning token_endpoint_auth_method to client: {client_info.get('token_endpoint_auth_method')}" ) return JSONResponse(client_info, status_code=201) - except Exception as e: logger.error(f"DCR proxy error: {e}") return JSONResponse( @@ -233,4 +247,39 @@ async def register_client_fix_auth_method(request): ) ) + async def authorize_proxy(request): + """Proxy for authorization endpoint to inject default scopes.""" + # Convert query params to mutable dict + params = dict(request.query_params) + + # Inject scopes + current_scopes = params.get("scope", "").split() + # Ensure openid is present (required for OIDC) + if "openid" not in current_scopes: + current_scopes.append("openid") + # Add other useful scopes + for scope in ["mcp:access"]: + if scope not in current_scopes: + current_scopes.append(scope) + + params["scope"] = " ".join(current_scopes) + + # Construct target URL (Keycloak's real auth endpoint) + target_url = f"{self.realm_url}/protocol/openid-connect/auth" + + # Build query string + query_string = urlencode(params) + + logger.info(f"Proxying auth request to: {target_url} with scopes: {params['scope']}") + return RedirectResponse(url=f"{target_url}?{query_string}") + + # Add authorization proxy + routes.append( + Route( + "/authorize", + endpoint=authorize_proxy, + methods=["GET"], + ) + ) + return routes From 202dabb4d8e8ce1cd237c7ef57568fadf83e880d Mon Sep 17 00:00:00 2001 From: Gwyneth Pena-Siguenza Date: Thu, 18 Dec 2025 00:15:01 -0500 Subject: [PATCH 08/12] add openid scope --- servers/auth_mcp.py | 49 +------------------------ servers/keycloak_provider.py | 69 +++--------------------------------- 2 files changed, 6 insertions(+), 112 deletions(-) diff --git a/servers/auth_mcp.py b/servers/auth_mcp.py index b3174f8..fc58ae3 100644 --- a/servers/auth_mcp.py +++ b/servers/auth_mcp.py @@ -1,7 +1,5 @@ """Run with: cd servers && uvicorn auth_mcp:app --host 0.0.0.0 --port 8000""" -import base64 -import json import logging import os import uuid @@ -25,7 +23,6 @@ from opentelemetry.instrumentation.starlette import StarletteInstrumentor from rich.console import Console from rich.logging import RichHandler -from starlette.middleware.base import BaseHTTPMiddleware from starlette.responses import JSONResponse from opentelemetry_middleware import OpenTelemetryMiddleware @@ -114,7 +111,7 @@ auth = KeycloakAuthProvider( realm_url=KEYCLOAK_REALM_URL, base_url=keycloak_base_url, - required_scopes=["mcp:access"], + required_scopes=["openid", "mcp:access"], audience=keycloak_audience, ) logger.info( @@ -251,51 +248,7 @@ async def health_check(_request): return JSONResponse({"status": "healthy", "service": "mcp-server"}) -# Debug middleware to log ALL incoming requests -class RequestDebugMiddleware(BaseHTTPMiddleware): - async def dispatch(self, request, call_next): - path = request.url.path - method = request.method - logger.info(f"=== INCOMING REQUEST: {method} {path} ===") - logger.info(f"Headers: {dict(request.headers)}") - response = await call_next(request) - logger.info(f"=== RESPONSE: {response.status_code} for {method} {path} ===") - return response - - -# Debug middleware to log token claims before auth -class TokenDebugMiddleware(BaseHTTPMiddleware): - async def dispatch(self, request, call_next): - path = request.url.path - method = request.method - auth_header = request.headers.get("Authorization", "") - - if auth_header.startswith("Bearer "): - token = auth_header[7:] - try: - parts = token.split(".") - payload = parts[1] - payload += "=" * (4 - len(payload) % 4) - claims = json.loads(base64.urlsafe_b64decode(payload)) - logger.info(f"=== TOKEN DEBUG [{method} {path}] ===") - logger.info(f"iss: {claims.get('iss')}") - logger.info(f"aud: {claims.get('aud')}") - logger.info(f"azp: {claims.get('azp')}") - logger.info(f"scope: {claims.get('scope')}") - logger.info(f"exp: {claims.get('exp')}") - logger.info("===================") - except Exception as e: - logger.error(f"Token decode error [{method} {path}]: {e}") - else: - logger.info( - f"=== NO BEARER TOKEN [{method} {path}] auth_header={auth_header[:50] if auth_header else 'empty'} ===" - ) - return await call_next(request) - - # Configure Starlette middleware for OpenTelemetry # We must do this *after* defining all the MCP server routes app = mcp.http_app() -app.add_middleware(RequestDebugMiddleware) -app.add_middleware(TokenDebugMiddleware) StarletteInstrumentor.instrument_app(app) diff --git a/servers/keycloak_provider.py b/servers/keycloak_provider.py index 6d460f2..a062a7c 100644 --- a/servers/keycloak_provider.py +++ b/servers/keycloak_provider.py @@ -9,15 +9,12 @@ from __future__ import annotations -import json -from urllib.parse import urlencode - import httpx from fastmcp.server.auth import RemoteAuthProvider from fastmcp.server.auth.providers.jwt import JWTVerifier from fastmcp.utilities.logging import get_logger from pydantic import AnyHttpUrl -from starlette.responses import JSONResponse, RedirectResponse +from starlette.responses import JSONResponse from starlette.routing import Route logger = get_logger(__name__) @@ -134,7 +131,6 @@ async def oauth_authorization_server_metadata(request): # Override registration_endpoint to use our minimal DCR proxy base_url = str(self.base_url).rstrip("/") metadata["registration_endpoint"] = f"{base_url}/register" - metadata["authorization_endpoint"] = f"{base_url}/authorize" return JSONResponse(metadata) except Exception as e: @@ -157,11 +153,11 @@ async def oauth_authorization_server_metadata(request): ) async def register_client_fix_auth_method(request): - """Minimal DCR proxy that fixes token_endpoint_auth_method and scope in Keycloak's client registration response. + """Minimal DCR proxy that fixes token_endpoint_auth_method in Keycloak's + client registration response. Forwards registration requests to Keycloak's DCR endpoint and modifies: 1. token_endpoint_auth_method: "client_secret_basic" -> "client_secret_post" for MCP compatibility - 2. scope: Ensures default scopes (openid, profile, email, mcp:tools) are included so audience mapper runs All other fields are passed through unchanged. """ @@ -169,25 +165,6 @@ async def register_client_fix_auth_method(request): body = await request.body() logger.info(f"DCR request body (original): {body.decode('utf-8')}") - # Inject default scopes to ensure audience mapper runs - # This is required because VS Code's MCP client doesn't request scopes during registration - try: - client_metadata = json.loads(body) - # Ensure we have at least openid scope which contains the audience mapper - current_scopes = client_metadata.get("scope", "").split() - if "openid" not in current_scopes: - current_scopes.append("openid") - # Add other useful scopes - for scope in ["mcp:access"]: - if scope not in current_scopes: - current_scopes.append(scope) - - client_metadata["scope"] = " ".join(current_scopes) - body = json.dumps(client_metadata).encode("utf-8") - logger.info(f"DCR request body (modified): {body.decode('utf-8')}") - except Exception as e: - logger.warning(f"Failed to inject scopes into DCR request: {e}") - # Forward to Keycloak's DCR endpoint async with httpx.AsyncClient(timeout=10.0) as client: forward_headers = { @@ -224,9 +201,8 @@ async def register_client_fix_auth_method(request): logger.debug("Fixing token_endpoint_auth_method: client_secret_basic -> client_secret_post") client_info["token_endpoint_auth_method"] = "client_secret_post" - logger.debug( - f"Returning token_endpoint_auth_method to client: {client_info.get('token_endpoint_auth_method')}" - ) + auth_method = client_info.get("token_endpoint_auth_method") + logger.debug(f"Returning token_endpoint_auth_method to client: {auth_method}") return JSONResponse(client_info, status_code=201) except Exception as e: logger.error(f"DCR proxy error: {e}") @@ -247,39 +223,4 @@ async def register_client_fix_auth_method(request): ) ) - async def authorize_proxy(request): - """Proxy for authorization endpoint to inject default scopes.""" - # Convert query params to mutable dict - params = dict(request.query_params) - - # Inject scopes - current_scopes = params.get("scope", "").split() - # Ensure openid is present (required for OIDC) - if "openid" not in current_scopes: - current_scopes.append("openid") - # Add other useful scopes - for scope in ["mcp:access"]: - if scope not in current_scopes: - current_scopes.append(scope) - - params["scope"] = " ".join(current_scopes) - - # Construct target URL (Keycloak's real auth endpoint) - target_url = f"{self.realm_url}/protocol/openid-connect/auth" - - # Build query string - query_string = urlencode(params) - - logger.info(f"Proxying auth request to: {target_url} with scopes: {params['scope']}") - return RedirectResponse(url=f"{target_url}?{query_string}") - - # Add authorization proxy - routes.append( - Route( - "/authorize", - endpoint=authorize_proxy, - methods=["GET"], - ) - ) - return routes From 0530e90be54009d3dbc236fb7601a1a97fc8c7c2 Mon Sep 17 00:00:00 2001 From: Gwyneth Pena-Siguenza Date: Thu, 18 Dec 2025 00:15:45 -0500 Subject: [PATCH 09/12] remove mcp url --- .vscode/mcp.json | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.vscode/mcp.json b/.vscode/mcp.json index 4ec147e..c66b615 100644 --- a/.vscode/mcp.json +++ b/.vscode/mcp.json @@ -28,10 +28,7 @@ "servers/basic_mcp_stdio.py" ] }, - "my-mcp-server-f62afe3c": { - "url": "https://mcproutes.bluetree-2d3ef102.eastus2.azurecontainerapps.io/mcp", - "type": "http" - } + }, "inputs": [] } \ No newline at end of file From 818477ff9a185b6a85273bdf38df40c4364fa02f Mon Sep 17 00:00:00 2001 From: Gwyneth Pena-Siguenza Date: Thu, 18 Dec 2025 00:17:16 -0500 Subject: [PATCH 10/12] ruff --- servers/keycloak_provider.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/servers/keycloak_provider.py b/servers/keycloak_provider.py index a062a7c..4e68ca9 100644 --- a/servers/keycloak_provider.py +++ b/servers/keycloak_provider.py @@ -153,7 +153,7 @@ async def oauth_authorization_server_metadata(request): ) async def register_client_fix_auth_method(request): - """Minimal DCR proxy that fixes token_endpoint_auth_method in Keycloak's + """Minimal DCR proxy that fixes token_endpoint_auth_method in Keycloak's client registration response. Forwards registration requests to Keycloak's DCR endpoint and modifies: From e5c4ac3ec58317b8d12420925bc3dd2e4f2d8298 Mon Sep 17 00:00:00 2001 From: Gwyneth Pena-Siguenza Date: Thu, 18 Dec 2025 08:20:19 -0500 Subject: [PATCH 11/12] clean up to realm so it has only what we need --- keycloak/realm.json | 83 +++++++++++---------------------------------- 1 file changed, 20 insertions(+), 63 deletions(-) diff --git a/keycloak/realm.json b/keycloak/realm.json index 95a4d1b..6591516 100644 --- a/keycloak/realm.json +++ b/keycloak/realm.json @@ -1,11 +1,7 @@ { "realm": "mcp", "enabled": true, - "registrationAllowed": false, - "loginWithEmailAllowed": true, - "duplicateEmailsAllowed": false, "resetPasswordAllowed": true, - "editUsernameAllowed": false, "bruteForceProtected": true, "accessTokenLifespan": 300, "ssoSessionIdleTimeout": 1800, @@ -28,17 +24,6 @@ "display.on.consent.screen": "false" }, "protocolMappers": [ - { - "name": "mcp-server-audience", - "protocol": "openid-connect", - "protocolMapper": "oidc-audience-mapper", - "consentRequired": false, - "config": { - "included.custom.audience": "mcp-server", - "id.token.claim": "false", - "access.token.claim": "true" - } - }, { "name": "sub", "protocol": "openid-connect", @@ -83,17 +68,15 @@ "enabled": true, "publicClient": true, "standardFlowEnabled": true, - "directAccessGrantsEnabled": true, - "serviceAccountsEnabled": false, - "authorizationServicesEnabled": false, - "fullScopeAllowed": true, "redirectUris": [ "http://127.0.0.1/*", "http://localhost/*", "https://vscode.dev/redirect", "https://insiders.vscode.dev/redirect" ], - "webOrigins": ["+"] + "webOrigins": [ + "+" + ] } ], "users": [ @@ -119,26 +102,31 @@ "providerId": "trusted-hosts", "subType": "anonymous", "config": { - "host-sending-registration-request-must-match": ["false"], - "client-uris-must-match": ["true"], + "host-sending-registration-request-must-match": [ + "false" + ], + "client-uris-must-match": [ + "true" + ], "trusted-hosts": [ - "localhost", - "127.0.0.1", - "172.17.0.1", - "host.docker.internal", - "vscode.dev", - "insiders.vscode.dev", - "code.visualstudio.com" -] + "localhost", + "127.0.0.1", + "172.17.0.1", + "host.docker.internal", + "vscode.dev", + "insiders.vscode.dev", + "code.visualstudio.com" + ] } }, - { "name": "Max Clients Limit", "providerId": "max-clients", "subType": "anonymous", "config": { - "max-clients": ["200"] + "max-clients": [ + "200" + ] } }, { @@ -150,44 +138,13 @@ "oidc-usermodel-attribute-mapper", "oidc-full-name-mapper", "oidc-address-mapper", - "saml-user-attribute-idp-mapper", "oidc-usermodel-property-mapper", - "saml-role-idp-mapper", - "saml-user-property-idp-mapper", - "oidc-sha256-pairwise-sub-mapper", - "oidc-sub-mapper", - "oidc-usersessionmodel-note-mapper", - "oidc-audience-mapper" - ] - } - }, - { - "name": "Allowed Protocol Mapper Types", - "providerId": "allowed-protocol-mappers", - "subType": "authenticated", - "config": { - "allowed-protocol-mapper-types": [ - "saml-user-property-idp-mapper", "oidc-sha256-pairwise-sub-mapper", - "oidc-usermodel-attribute-mapper", - "saml-role-idp-mapper", - "oidc-full-name-mapper", - "oidc-usermodel-property-mapper", - "saml-user-attribute-idp-mapper", - "oidc-address-mapper", "oidc-sub-mapper", "oidc-usersessionmodel-note-mapper", "oidc-audience-mapper" ] } - }, - { - "name": "Allowed Client Scopes", - "providerId": "allowed-client-templates", - "subType": "authenticated", - "config": { - "allow-default-scopes": ["true"] - } } ] } From 4a5148df611843fa088854cf14b0f2ee4b74adf1 Mon Sep 17 00:00:00 2001 From: Gwyneth Pena-Siguenza Date: Thu, 18 Dec 2025 08:24:19 -0500 Subject: [PATCH 12/12] addresses feedback from Pamela and Copilot --- .vscode/mcp.json | 2 +- README.md | 17 ----------------- servers/keycloak_provider.py | 7 +++---- 3 files changed, 4 insertions(+), 22 deletions(-) diff --git a/.vscode/mcp.json b/.vscode/mcp.json index c66b615..a2fac6c 100644 --- a/.vscode/mcp.json +++ b/.vscode/mcp.json @@ -27,7 +27,7 @@ "0.0.0.0:5678", "servers/basic_mcp_stdio.py" ] - }, + } }, "inputs": [] diff --git a/README.md b/README.md index 669bd98..8a75809 100644 --- a/README.md +++ b/README.md @@ -432,23 +432,6 @@ This project supports deploying with OAuth 2.0 authentication using Keycloak as Login with `admin` and your configured password. -### Testing with the agent - -1. Generate the local environment file (automatically created after `azd up`): - - ```bash - ./infra/write_env.sh - ``` - - This creates `.env` with `KEYCLOAK_REALM_URL`, `MCP_SERVER_URL`, and Azure OpenAI settings. - -2. Run the agent: - - ```bash - uv run agents/agentframework_http.py - ``` - - The agent automatically detects `KEYCLOAK_REALM_URL` in the environment and authenticates via DCR + client credentials. On success, it will add an expense and print the result. ### Use Keycloak OAuth MCP server with GitHub Copilot diff --git a/servers/keycloak_provider.py b/servers/keycloak_provider.py index 4e68ca9..ce33b65 100644 --- a/servers/keycloak_provider.py +++ b/servers/keycloak_provider.py @@ -163,7 +163,6 @@ async def register_client_fix_auth_method(request): """ try: body = await request.body() - logger.info(f"DCR request body (original): {body.decode('utf-8')}") # Forward to Keycloak's DCR endpoint async with httpx.AsyncClient(timeout=10.0) as client: @@ -204,12 +203,12 @@ async def register_client_fix_auth_method(request): auth_method = client_info.get("token_endpoint_auth_method") logger.debug(f"Returning token_endpoint_auth_method to client: {auth_method}") return JSONResponse(client_info, status_code=201) - except Exception as e: - logger.error(f"DCR proxy error: {e}") + except Exception: + logger.exception("DCR proxy error during client registration") return JSONResponse( { "error": "server_error", - "error_description": f"Client registration failed: {e}", + "error_description": "Client registration failed.", }, status_code=500, )