@nodefony/security 10.0.0-alpha.9 → 10.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/nodefony/command/security-token.js +4 -4
- package/dist/nodefony/command/security-user-delete.js +2 -2
- package/dist/nodefony/command/security-user-list.js +1 -1
- package/dist/nodefony/service/apiKeys.js +2 -2
- package/dist/nodefony/service/auditService.js +3 -3
- package/dist/nodefony/service/authFlow.js +2 -2
- package/dist/nodefony/service/authorization.js +3 -4
- package/dist/nodefony/service/firewall.js +21 -9
- package/dist/nodefony/service/oauth2.js +5 -3
- package/dist/nodefony/service/securityHeaders.js +1 -1
- package/dist/nodefony/service/tokenService.js +27 -18
- package/dist/nodefony/service/webAuthn.js +38 -31
- package/dist/nodefony/service/webhooks.js +50 -41
- package/dist/nodefony/src/admin/SecurityAdminApi.js +2 -1
- package/dist/nodefony/src/admin/WebhookAdminApi.js +1 -0
- package/dist/nodefony/src/admin/userRevocationCascade.js +1 -1
- package/dist/nodefony/src/apikey/apiKeyFormat.js +1 -1
- package/dist/nodefony/src/audit/MemoryAuditStore.js +4 -8
- package/dist/nodefony/src/audit/auditBridge.js +9 -5
- package/dist/nodefony/src/authenticator/ApiKeyAuthenticator.js +3 -3
- package/dist/nodefony/src/authenticator/ExternalJwtAuthenticator.js +2 -2
- package/dist/nodefony/src/authenticator/FirewallRealtimeAuthenticator.js +2 -2
- package/dist/nodefony/src/authenticator/JwtAuthenticator.js +2 -2
- package/dist/nodefony/src/authenticator/SessionAuthenticator.js +5 -3
- package/dist/nodefony/src/authenticator/UserPasswordAuthenticator.js +2 -2
- package/dist/nodefony/src/csp.js +4 -5
- package/dist/nodefony/src/oauth/providers/github.js +1 -1
- package/dist/nodefony/src/realtime/frameAuthorizer.js +6 -6
- package/dist/nodefony/src/token/JwtKeystore.js +7 -6
- package/dist/nodefony/src/token/MemoryTokenStore.js +1 -1
- package/dist/nodefony/src/token/jwtRuntime.js +13 -1
- package/dist/nodefony/src/token/tokenCriteria.js +1 -0
- package/dist/nodefony/src/totp/totpCrypto.js +9 -9
- package/dist/nodefony/src/webhook/WebhookDispatcher.js +4 -3
- package/dist/types/nodefony/contracts/IAuditEvent.d.ts +6 -2
- package/dist/types/nodefony/contracts/IFirewall.d.ts +2 -2
- package/dist/types/nodefony/contracts/IFirewallDescription.d.ts +5 -5
- package/dist/types/nodefony/contracts/ISecuredArea.d.ts +4 -4
- package/dist/types/nodefony/contracts/ITokenStore.d.ts +3 -3
- package/dist/types/nodefony/contracts/ITotpSecretStore.d.ts +4 -4
- package/dist/types/nodefony/contracts/IWebAuthnCredentialStore.d.ts +1 -1
- package/dist/types/nodefony/errors/InvalidTargetError.d.ts +1 -1
- package/dist/types/nodefony/errors/UnverifiableTokenError.d.ts +1 -1
- package/dist/types/nodefony/service/firewall.d.ts +3 -2
- package/dist/types/nodefony/service/securityHeaders.d.ts +5 -5
- package/dist/types/nodefony/src/SecuredArea.d.ts +2 -2
- package/dist/types/nodefony/src/authenticator/SessionAuthenticator.d.ts +5 -3
- package/dist/types/nodefony/src/oauth/oauth2Client.d.ts +2 -2
- package/dist/types/nodefony/src/oauth/oauthProviderRegistry.d.ts +2 -2
- package/dist/types/nodefony/src/realtime/realtimeContracts.d.ts +3 -3
- package/dist/types/nodefony/src/token/JwtKeystore.d.ts +2 -2
- package/dist/types/nodefony/src/token/RemoteJwtVerifier.d.ts +2 -2
- package/dist/types/nodefony/src/token/jwtRuntime.d.ts +10 -0
- package/docs/api-keys.md +15 -15
- package/docs/audit.md +18 -13
- package/docs/authenticators.md +6 -6
- package/docs/authorization.md +15 -15
- package/docs/cors.md +6 -6
- package/docs/csrf.md +7 -7
- package/docs/external-jwt.md +17 -9
- package/docs/firewall.md +7 -7
- package/docs/headers.md +13 -13
- package/docs/index.md +3 -1
- package/docs/oauth2.md +2 -2
- package/docs/tokens.md +6 -6
- package/docs/webauthn.md +13 -13
- package/docs/webhooks.md +9 -12
- package/package.json +13 -13
package/docs/webhooks.md
CHANGED
|
@@ -66,11 +66,11 @@ Le détail de chaque étape est plus bas, dans **Architecture interne**.
|
|
|
66
66
|
|
|
67
67
|
Trois usages courants, tous branchés sur des événements que Nodefony émet déjà :
|
|
68
68
|
|
|
69
|
-
| Ce que tu veux | Tu abonnes
|
|
70
|
-
| -------------------------------------------------------------------------- |
|
|
71
|
-
| Être prévenu quand quelqu'un s'acharne sur un compte | `login.failure`
|
|
72
|
-
| Garder une trace inviolable des accès, hors de l'application | `*`
|
|
73
|
-
| Couper l'accès d'un salarié partout ailleurs quand sa session est révoquée | `
|
|
69
|
+
| Ce que tu veux | Tu abonnes | Le tiers qui reçoit |
|
|
70
|
+
| -------------------------------------------------------------------------- | ----------------------------------------- | ---------------------------------- |
|
|
71
|
+
| Être prévenu quand quelqu'un s'acharne sur un compte | `login.failure` | un canal Slack, un SMS d'astreinte |
|
|
72
|
+
| Garder une trace inviolable des accès, hors de l'application | `*` | un SIEM, un bucket d'archives |
|
|
73
|
+
| Couper l'accès d'un salarié partout ailleurs quand sa session est révoquée | `session.revoked`, `token.reuse_detected` | ton annuaire, ton outil de tickets |
|
|
74
74
|
|
|
75
75
|
Le premier, en entier — un serveur qui prévient une équipe quand un compte est attaqué :
|
|
76
76
|
|
|
@@ -418,8 +418,8 @@ Les catégories d'audit disponibles (`AuditCategory`, `IAuditEvent.ts:24`) donne
|
|
|
418
418
|
| ---------- | -------------------------------------------------------------------------- |
|
|
419
419
|
| `auth` | Login/logout, chaîne d'authentification (`login.success`, `login.failure`) |
|
|
420
420
|
| `authz` | Accès accordé/refusé, voters, `@IsGranted` (`access.denied`) |
|
|
421
|
-
| `token` | Jetons longue durée
|
|
422
|
-
| `session` | Cycle de vie de session (`session.
|
|
421
|
+
| `token` | Jetons longue durée et clés d'API (`token.issued`, `apikey.revoked`) |
|
|
422
|
+
| `session` | Cycle de vie de session (`logout`, `session.revoked`) |
|
|
423
423
|
| `oauth` | Login social : authorize, callback, provisioning JIT |
|
|
424
424
|
| `webauthn` | Passkeys : enregistrement, assertion |
|
|
425
425
|
| `csrf` | Défense CSRF déclenchée |
|
|
@@ -672,7 +672,7 @@ abandon. Chaque retry **repasse par la file bornée** (`#scheduleRetry()`,
|
|
|
672
672
|
|
|
673
673
|
### Auto-désactivation d'un endpoint mort
|
|
674
674
|
|
|
675
|
-
Chaque issue finale passe par `WebhookService.markDelivery()` (`webhooks.ts:
|
|
675
|
+
Chaque issue finale passe par `WebhookService.markDelivery()` (`webhooks.ts:682`) : succès →
|
|
676
676
|
`failureCount = 0` ; échec → incrément. Au-delà de `autoDisableThreshold` (défaut **20**), l'endpoint
|
|
677
677
|
est **désactivé** et un unique événement d'audit `webhook.disabled` est émis — **un par endpoint qui
|
|
678
678
|
meurt**, jamais un par échec (le volume resterait ingérable). Mettre le seuil à `0` désactive
|
|
@@ -725,7 +725,7 @@ Section `webhooks` du schéma Zod (`webhooksSchema`, `security/nodefony/config/c
|
|
|
725
725
|
|
|
726
726
|
> [!NOTE]
|
|
727
727
|
> `timestampToleranceS` est **transporté** dans la politique de livraison
|
|
728
|
-
> (`getDeliveryPolicy()`, `webhooks.ts:
|
|
728
|
+
> (`getDeliveryPolicy()`, `webhooks.ts:663`) mais l'émetteur ne l'applique jamais : la fenêtre
|
|
729
729
|
> anti-rejeu est par nature un contrôle du **récepteur**. Traite cette valeur comme la tolérance que
|
|
730
730
|
> tu documentes à tes destinataires — c'est celle du récepteur qui protège.
|
|
731
731
|
|
|
@@ -1017,6 +1017,3 @@ Couverture : `npm run coverage` dans `@nodefony/security`. Revue de sécurité d
|
|
|
1017
1017
|
- La **source des événements** livrés → [audit](audit.md) · Le pare-feu qui les produit → [firewall](firewall.md)
|
|
1018
1018
|
- Secrets et jetons du module, mêmes principes de chiffrement au repos → [tokens](tokens.md)
|
|
1019
1019
|
- Vocabulaire transverse de la sécurité → [lexique](lexique.md)
|
|
1020
|
-
</content>
|
|
1021
|
-
|
|
1022
|
-
</invoke>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nodefony/security",
|
|
3
|
-
"version": "10.0.0-
|
|
3
|
+
"version": "10.0.0-beta.1",
|
|
4
4
|
"description": "Pare-feu applicatif par zones pour Nodefony : authentification, autorisation par rôles, protection CSRF, journal d'audit",
|
|
5
5
|
"author": "Christophe CAMENSULI <ccamensuli@gmail.com>",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -48,28 +48,28 @@
|
|
|
48
48
|
"directory": "src/packages/@nodefony/security"
|
|
49
49
|
},
|
|
50
50
|
"dependencies": {
|
|
51
|
-
"@simplewebauthn/server": "14.0.
|
|
51
|
+
"@simplewebauthn/server": "14.0.3",
|
|
52
52
|
"jose": "6.2.12",
|
|
53
53
|
"tslib": "2.8.1",
|
|
54
54
|
"zod": "^4.6.5"
|
|
55
55
|
},
|
|
56
56
|
"devDependencies": {
|
|
57
|
-
"@nodefony/framework": "^10.0.0-
|
|
58
|
-
"@nodefony/http": "^10.0.0-
|
|
59
|
-
"@nodefony/user": "^10.0.0-
|
|
60
|
-
"@types/node": "26.6.
|
|
61
|
-
"@vitest/coverage-v8": "5.0.
|
|
62
|
-
"nodefony": "^10.0.0-
|
|
63
|
-
"vitest": "5.0.
|
|
57
|
+
"@nodefony/framework": "^10.0.0-beta.1",
|
|
58
|
+
"@nodefony/http": "^10.0.0-beta.1",
|
|
59
|
+
"@nodefony/user": "^10.0.0-beta.1",
|
|
60
|
+
"@types/node": "26.6.3",
|
|
61
|
+
"@vitest/coverage-v8": "5.0.2",
|
|
62
|
+
"nodefony": "^10.0.0-beta.1",
|
|
63
|
+
"vitest": "5.0.2"
|
|
64
64
|
},
|
|
65
65
|
"license": "Apache-2.0",
|
|
66
66
|
"readmeFilename": "README.md",
|
|
67
67
|
"contributors": [],
|
|
68
68
|
"peerDependencies": {
|
|
69
|
-
"@nodefony/framework": "^10.0.0-
|
|
70
|
-
"@nodefony/http": "^10.0.0-
|
|
71
|
-
"@nodefony/user": "^10.0.0-
|
|
72
|
-
"nodefony": "^10.0.0-
|
|
69
|
+
"@nodefony/framework": "^10.0.0-beta.1",
|
|
70
|
+
"@nodefony/http": "^10.0.0-beta.1",
|
|
71
|
+
"@nodefony/user": "^10.0.0-beta.1",
|
|
72
|
+
"nodefony": "^10.0.0-beta.1"
|
|
73
73
|
},
|
|
74
74
|
"files": [
|
|
75
75
|
"dist",
|