**Motivations:** - website-skeleton needs a real service contract with valid UUIDs and validators - Service wallet required for production use with configurable public key - Iframe styling needs improvement to remove scrollbars and match UserWallet theme **Root causes:** - DEFAULT_VALIDATEURS used placeholder public key that cannot verify signatures - No service wallet generation script for production deployment - Iframe had fixed height causing scrollbars and visual mismatch with dark theme **Correctifs:** - Created real service contract in src/serviceContract.ts with dedicated UUIDs (skeleton-service-uuid-4nkweb-2026) - Added service wallet generation script (generate-service-wallet.mjs) with .env and .env.private files - Improved iframe container styling: increased height (800px), dark background (#1a1a1a), better shadows, hidden scrollbars - Added .env.private to .gitignore for security **Evolutions:** - Service contract automatically loaded on startup and sent to UserWallet iframe - Public key configurable via VITE_SKELETON_SERVICE_PUBLIC_KEY environment variable - Added npm script 'generate-wallet' for easy wallet generation - Enhanced iframe visual integration with UserWallet dark theme **Pages affectées:** - website-skeleton/src/serviceContract.ts (new) - website-skeleton/src/config.ts - website-skeleton/src/main.ts - website-skeleton/generate-service-wallet.mjs (new) - website-skeleton/index.html - website-skeleton/package.json - website-skeleton/.gitignore - website-skeleton/.env (new) - website-skeleton/.env.private (new)
5.3 KiB
website-skeleton
Squelette d’un site web qui intègre UserWallet en iframe : écoute des messages postMessage (login-proof, error, contract), vérification des preuves de login via service-login-verify, et affichage du statut (accepté / refusé). Connexion via un seul parcours : « Se connecter » puis authentification MFA dans l'iframe.
Objectif
Fournir un projet minimal, prêt à l’emploi, pour :
- embarquer UserWallet dans une page via iframe ;
- communiquer avec l’iframe via
postMessage(Channel Messages) ; - vérifier les preuves de login côté parent avec le package
service-login-verify.
Utile comme base pour un service (certificator, zapwall, etc.) qui consomme UserWallet et doit valider les sessions.
Emplacement et structure
- Dossier :
website-skeleton/à la racine du dépôt (à côté deuserwallet/,service-login-verify/,api-relay/). - Stack : Vite, TypeScript, dépendance
service-login-verify(file:../service-login-verify).
Fichiers principaux
| Fichier | Rôle |
|---|---|
index.html |
Page avec iframe UserWallet, zone de statut, lien « Description du contrat », bouton « Se connecter » |
contrat.html |
Page de description du contrat de service skeleton (labels, UUIDs, usage) |
src/main.ts |
Chargement iframe, écoute message, envoi du contrat au clic « Se connecter », appel verifyLoginProof, mise à jour du statut |
src/config.ts |
USERWALLET_ORIGIN, DEFAULT_VALIDATEURS (placeholder) |
package.json |
Scripts dev / build / preview, dépendance service-login-verify |
start.sh |
Build + vite preview sur le port 3024 (production) |
vite.config.ts |
preview.allowedHosts: ['skeleton.certificator.4nkweb.com'] pour éviter 403 via proxy |
website-skeleton.service |
Unité systemd pour servir le site |
install-website-skeleton.sh |
Installation locale (build, systemd) |
README.md |
Instructions d’installation, configuration et utilisation |
Prérequis
- service-login-verify : exécuter
npm run builddans../service-login-verifyavant d’installer ou builder le skeleton. - UserWallet : à servir sur l’URL configurée (
USERWALLET_ORIGIN) pour que l’iframe fonctionne.
Installation et commandes
cd website-skeleton
npm install
npm run build
- Développement :
npm run dev→ serveur surhttp://localhost:3024. - Preview :
npm run previewaprès build.
Configuration
Origine UserWallet
- Fichier :
src/config.ts. - Variable :
USERWALLET_ORIGIN= URL de l’iframe ettargetOriginpourpostMessage. - Défauts :
- En dev :
http://localhost:3018(UserWallet en dev sur ce port). - En prod :
https://userwallet.certificator.4nkweb.com.
- En dev :
- Override : variable d’environnement
VITE_USERWALLET_ORIGIN(ex.VITE_USERWALLET_ORIGIN=http://localhost:3018 npm run dev).
Validateurs
- Fichier :
src/config.ts, objetDEFAULT_VALIDATEURS. - Rôle : structure des validateurs de l’action login (placeholder).
- Usage réel : remplacer par les validateurs issus du contrat du service (action login), ou les charger depuis une API / un channel.
Utilisation
- Lancer UserWallet (dev ou déployé) sur l’URL configurée.
- Lancer le skeleton (
npm run devou servirdist/). - Ouvrir la page du skeleton : l’iframe affiche UserWallet.
- Se connecter : cliquer « Se connecter » → envoi du contrat à l’iframe, affichage de l’iframe.
- Login MFA : effectuer le flux de login (MFA) dans l’iframe ; à la fin, UserWallet envoie
login-proofau parent. Le skeleton appelleverifyLoginProof, puis affiche « Login accepté » ou « Login refusé : … ». - Description du contrat : lien « Description du contrat » vers
contrat.html.
Messages postMessage
| Type | Sens | Rôle du skeleton |
|---|---|---|
contract |
Parent → iframe | Envoyé au clic sur « Se connecter » (et au load de l’iframe). |
login-proof |
Iframe → parent | Vérification via verifyLoginProof, mise à jour du statut. |
error |
Iframe → parent | Affichage du message d’erreur. |
Déploiement
- Port : 3024 (aucun conflit avec le Dashboard, 3020).
- Backend : machine 192.168.1.168 (site + service systemd).
- Proxy : 192.168.1.100 ; Nginx route
skeleton.certificator.4nkweb.com→http://192.168.1.168:3024. - Certificat : Let's Encrypt sur le proxy pour
skeleton.certificator.4nkweb.com(viaconfigure-nginx-proxy.sh/update-proxy-nginx.sh).
Installation
-
Sur la machine backend (192.168.1.105) :
./website-skeleton/install-website-skeleton.shConstruit le front, installe et démarre le service systemd (
website-skeleton.service). -
Proxy + certificat : à partir de la racine du dépôt,
./update-proxy-nginx.shConfigure Nginx sur le proxy (.100), génère le certificat pour
skeleton.certificator.4nkweb.com, recharge Nginx.
Voir docs/DOMAINS_AND_PORTS.md pour les domaines et ports.
Références
- Package vérification :
service-login-verify/,features/service-login-verify.md - Iframe et login :
userwallet/,features/userwallet-contrat-login-reste-a-faire.md(§ 3.7) - Relais :
api-relay/,docs/DOMAINS_AND_PORTS.md