- Copy enso/docs tree to services/docv/enso-docs (refresh via cp -a from enso repo) - Document mirror and refresh command in services/docv/README.md - Ignore services/docv/target for local Rust workspace - Track docv-service-integration, API docv.md, and related doc index updates
58 lines
2.5 KiB
Markdown
58 lines
2.5 KiB
Markdown
# SSO — front plateforme et docv (filière Enso)
|
||
|
||
## Objectif
|
||
|
||
Permettre au **front web** de la plateforme `smart_ide` (déployé par environnement : test, pprod, prod) de déléguer l’authentification à **docv** via **OpenID Connect (OIDC)** , sans coupler le monorepo au code du dépôt Enso tant que celui-ci n’est pas disponible sur la machine de documentation.
|
||
|
||
## Rôles
|
||
|
||
| Composant | Rôle |
|
||
|-----------|------|
|
||
| **Navigateur utilisateur** | Redirection vers docv (authorization endpoint) |
|
||
| **docv / IdP Enso** | Émet `id_token` / `access_token`, expose JWKS |
|
||
| **Front SPA** | Échange code OAuth (PKCE recommandé), stocke session |
|
||
| **Backend API** (orchestrateur ou BFF) | Valide JWT (signature JWKS, `iss`, `aud`, `exp`), mappe rôles → droits policy |
|
||
|
||
## Flux (authorization code + PKCE)
|
||
|
||
```mermaid
|
||
sequenceDiagram
|
||
participant Browser
|
||
participant Front as Front_SPA
|
||
participant Docv as docv_IdP
|
||
participant API as smart_ide_API
|
||
Browser->>Front: open app
|
||
Front->>Docv: redirect authorize
|
||
Docv->>Browser: login consent
|
||
Browser->>Front: callback code
|
||
Front->>Docv: token endpoint
|
||
Docv->>Front: access_token id_token
|
||
Front->>API: API calls Authorization Bearer
|
||
API->>API: validate JWT JWKS
|
||
```
|
||
|
||
Intégrations **IA** côté backend docv (services smart_ide, clones, AnythingLLM) : [docv-ai-integration.md](./docv-ai-integration.md).
|
||
|
||
Gestion documentaire, chemins **`../projects/<projet>/data`**, **`DOCV_PROJECTS_ROOT`** : [docv-service-integration.md](./docv-service-integration.md).
|
||
|
||
## Paramètres à fixer avec le dépôt Enso
|
||
|
||
- `issuer` (URL stable par env)
|
||
- `client_id` / `client_secret` ou client public + PKCE
|
||
- Scopes : au minimum `openid`, `profile`, `email` ; scopes métier docv si besoin
|
||
- **Audience** (`aud`) attendue par l’API `smart_ide`
|
||
- Mapping **rôles / groupes** → profils OpenShell (lecture seule, deploy pprod, etc.)
|
||
|
||
## Environnements
|
||
|
||
Un **client OAuth par env** (test / pprod / prod) ou un seul client avec **claims** d’environnement — à trancher avec la sécurité Enso. Les URLs de callback du front diffèrent par déploiement.
|
||
|
||
## Références internes
|
||
|
||
- [platform-target.md](../platform-target.md) — matrice test / pprod / prod
|
||
- [deployment-target.md](../deployment-target.md) — TLS, pas de HTTP de contournement
|
||
|
||
## Suite
|
||
|
||
Lorsque le dépôt Enso (ex. `/home/desk/code/enso/`) est accessible, compléter ce document avec les **chemins d’endpoints** réels et captures d’écran des écrans docv concernés.
|