fix(infra): lève les points de revue du reverse proxy
Compose interpole tout le fichier avant n'importe quelle sous-commande : la garde
`${PUBLIC_HOST:?}` de l'overlay cassait `stack-down` et `stack-logs` autant que le
démarrage. La valeur retombe sur `enervision.local`, et `stack-up` vérifie à la place
que le certificat présent couvre l'hôte demandé, ce qui est la condition réelle à tenir.
La CSP `script-src 'self'` bloquait le gestionnaire `onload` que l'inlining du CSS
critique d'Angular pose sur la feuille de styles : l'application se serait affichée sans
style derrière le proxy. `inlineCritical` passe à faux, le build de production ne produit
plus aucun script en ligne.
La zone de limitation resserrée ne couvre plus que les routes qui vérifient un secret.
Derrière le NAT de l'école, où une seule adresse porte toute la promotion, `/auth/me` et
`/auth/refresh` y auraient produit des 429 en usage normal.
Enfin `certbot/certbot` est épinglé en v5.8.0 pour que Dependabot puisse le suivre, le
proxy attend une API saine plutôt que démarrée, et la redirection vers `$host` est actée
comme risque accepté : figer un nom canonique couperait l'accès par adresse IP, seule
voie ouverte sur la machine cible.
This commit is contained in:
@@ -134,6 +134,13 @@ Compose.
|
||||
`/sites`, `authInterceptor` pose le jeton porteur sur les requêtes sortantes et déclenche le
|
||||
rafraîchissement sur 401. Détail complet dans
|
||||
[31-contrat-authentification.md](31-contrat-authentification.md).
|
||||
- **La CSP posée par le reverse proxy contraint le build.** `script-src 'self'` interdit les
|
||||
gestionnaires d'événements en ligne ; l'inlining du CSS critique en produisait un
|
||||
(`<link media="print" onload="this.media='all'">`), ce qui aurait laissé l'application sans
|
||||
style derrière le proxy. D'où `optimization.styles.inlineCritical: false` dans la configuration
|
||||
de production d'`angular.json`. La contrepartie est un rendu non stylé très bref au premier
|
||||
affichage. `style-src` conserve `'unsafe-inline'` : Angular injecte les styles de composants à
|
||||
l'exécution, et s'en passer demanderait un `ngCspNonce` que le SPA statique ne peut pas produire.
|
||||
|
||||
## Tests
|
||||
|
||||
|
||||
Reference in New Issue
Block a user