smart_ide/docs/API/sso-gateway-api.md
Nicolas Cantu 68cb5737c5 feat(sso-gateway): add OIDC JWT gateway and proxy to micro-services
- New service smart-ide-sso-gateway (port 37148): JWKS verify, /health,
  /v1/token/verify, /v1/upstreams, /proxy/<key>/...
- CORS on JSON responses when SSO_CORS_ORIGIN is set; optional empty
  bearer for langextract upstream
- Docs: feature, API, repo index; wire sso-docv-enso and services scope
- Extend config/services.local.env.example with OIDC and gateway vars
2026-04-03 22:42:44 +02:00

2.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> : chemin transmis tel quel à lURL de base du service (ex. /proxy/orchestrator/v1/...http://ORCHESTRATOR_HOST:PORT/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 ; 503 si local_office est ciblé sans LOCAL_OFFICE_API_KEY.

Len-tête Authorization utilisateur nest pas transmis à lamont ; il est remplacé par le jeton de service configuré. Voir sso-gateway-service.md.

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

Les jetons et hôtes des micro-services : mêmes noms que dans config/services.local.env.example.

Voir aussi