smart_ide/docs/API/sso-gateway-api.md
Nicolas Cantu 0af507143a Add smart-ide-global API layer, SSO delegates proxy, .logs access logs
- New smart-ide-global-api (127.0.0.1:37149): internal bearer, upstream proxy, X-OIDC forward
- SSO gateway calls global API with GLOBAL_API_INTERNAL_TOKEN; logs to .logs/sso-gateway/
- Aggregated config example, docs, VERSION 0.0.2, claw proxy local URL hint
2026-04-03 23:08:52 +02:00

3.3 KiB
Raw Blame History

API — smart-ide-sso-gateway

Écoute par défaut : 127.0.0.1:37148. Configuration : services/smart-ide-sso-gateway/.env.example, agrégat config/services.local.env.example.

Authentification

Route Auth utilisateur
GET /health Aucune
OPTIONS * Aucune (préflight CORS si SSO_CORS_ORIGIN défini)
Toutes les autres Authorization: Bearer <access_token> OIDC (docv / Enso)

Endpoints

GET /health

Réponse 200 : { "status": "ok", "service": "smart-ide-sso-gateway" }.

GET /v1/token/verify

Vérifie le Bearer utilisateur. Réponse 200 : { "valid": true, "claims": { ... } } avec un sous-ensemble des claims (sub, iss, aud, exp, iat, email, name, preferred_username).

GET /v1/upstreams

Liste les clés de proxy disponibles : { "upstreams": [ "orchestrator", ... ] }.

Proxy — ANY /proxy/<upstream_key>/<path>

  • <upstream_key> : voir liste ci-dessus (repos_devtools, orchestrator, etc.).
  • <path> : relayé vers smart-ide-global-api sous /v1/upstream/<upstream_key><path> (ex. /proxy/orchestrator/v1/...GLOBAL_API_URL/v1/upstream/orchestrator/v1/...).
  • Corps : relayé pour les méthodes avec body (limite SSO_GATEWAY_MAX_BODY_BYTES, défaut 32 MiB).
  • Réponses derreur : 401 si Bearer utilisateur absent ou invalide ; 404 si clé inconnue ; erreurs amont si lAPI globale ou un micro-service refuse la requête.

Len-tête Authorization utilisateur nest pas transmis à lAPI globale ; il est remplacé par GLOBAL_API_INTERNAL_TOKEN. Les claims OIDC sont transmis en X-OIDC-Sub / X-OIDC-Email jusquaux micro-services. Voir sso-gateway-service.md et global-api.md.

Journaux

Fichier .logs/sso-gateway/access.log : lignes JSON (ts, method, path, upstream, status, durationMs, oidcSub si présent). Les GET /health et OPTIONS ne sont pas journalisés.

Comptes et projets

Aucun stockage dutilisateurs ou de comptes par projet dans ce service : uniquement validation OIDC et proxy. Les données de compte et dappartenance projet vivent dans les bases métier des produits ; la passerelle ne les duplique pas.

Variables denvironnement (passerelle)

Variable Rôle
OIDC_ISSUER Obligatoire — URL de lissuer OpenID
OIDC_AUDIENCE Optionnel — audience attendue du JWT
OIDC_JWKS_URI Optionnel — URI JWKS explicite
SSO_GATEWAY_HOST / SSO_GATEWAY_PORT Bind HTTP
SSO_CORS_ORIGIN Si défini, en-têtes CORS sur les réponses
SSO_GATEWAY_MAX_BODY_BYTES Taille max du corps en entrée
GLOBAL_API_URL Base HTTP de smart-ide-global-api (défaut http://127.0.0.1:37149)
GLOBAL_API_INTERNAL_TOKEN Obligatoire — même valeur que sur smart-ide-global-api
SMART_IDE_MONOREPO_ROOT Optionnel — racine pour écrire sous .logs/sso-gateway/

Les jetons et hôtes des micro-services sont lus par smart-ide-global-api ; voir config/services.local.env.example et global-api.md.

Voir aussi