- 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
3.3 KiB
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 d’erreur :
401si Bearer utilisateur absent ou invalide ;404si clé inconnue ; erreurs amont si l’API globale ou un micro-service refuse la requête.
L’en-tête Authorization utilisateur n’est pas transmis à l’API globale ; il est remplacé par GLOBAL_API_INTERNAL_TOKEN. Les claims OIDC sont transmis en X-OIDC-Sub / X-OIDC-Email jusqu’aux 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 d’utilisateurs ou de comptes par projet dans ce service : uniquement validation OIDC et proxy. Les données de compte et d’appartenance projet vivent dans les bases métier des produits ; la passerelle ne les duplique pas.
Variables d’environnement (passerelle)
| Variable | Rôle |
|---|---|
OIDC_ISSUER |
Obligatoire — URL de l’issuer 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.