Serveur MCP (/mcp) et jetons d'accès (Bearer, OAuth 2.1)

- internal/tokens : jetons personnels hachés (DATA_DIR/.tokens.json),
  authentification Bearer devant la session, routes /api/tokens,
  serveur d'autorisation OAuth 2.1 (DCR, PKCE S256, rotation) pour les
  connecteurs claude.ai / Claude Desktop, consentement adossé à la session.
- internal/mcp : JSON-RPC Streamable HTTP, outils list/search/read/
  write_diagram et create_folder, normalisation des éléments (label,
  liaisons start/end des flèches).
- main.go : PUBLIC_URL, OAUTH_REDIRECT_HOSTS, chemins OAuth publics.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nh6YQSjM9ni5jiTc8u5Tj1
This commit is contained in:
claude BotandClaude Opus 5.5 committed 2026-10-14 10:09:27 +02:00
1 parent 1e4370cd0a
commit eeda956d24
7 files changed
+1143 -4

No files matched your search

+6
View File
@@ -22,6 +22,12 @@ func TestBasicAuthPublicPaths(t *testing.T) {
"/api/publicx": 401,
"/assets/": 401, // dossier : pas un fichier statique
"/inconnu": 401,
"/.well-known/oauth-protected-resource/mcp": 200,
"/.well-known/oauth-authorization-server": 200,
"/oauth/register": 200,
"/oauth/token": 200,
"/oauth/authorize": 401, // consentement : session requise
"/mcp": 401, // jeton requis (middleware des jetons)
}
for p, want := range cases {
rec := httptest.NewRecorder()