Nodefony 10.0.0-beta.5
Framework Node.js fullstack — HTTP & WebSocket, même contexte

Référence d'API — @nodefony/security — contracts

stable

Documentation › Référence d’API › @nodefony/security › contracts

Générée depuis les déclarations de types publiées de @nodefony/security 10.0.0-beta.5 : exactement ce que reçoit une application qui l’installe. Cette page n’existe dans aucun dépôt — pour la corriger, on corrige le TSDoc du code.

@nodefony/security#

import { … } from "@nodefony/security" — 47 symboles.

Interfaces (39)#

IAccessTokenRecord#

interface IAccessTokenRecord

Enregistrement d’un jeton persistant — un PAT (clé API style GitHub) ou un refresh token. Le secret n’est JAMAIS stocké en clair : seul secretHash vit ici (le secret high-entropy est affiché une seule fois à la création).

IAccessVoter#

interface IAccessVoter

Voter contextuel (niveau C de l’autorisation, P6.8) — décide d’un accès en fonction du token ET du sujet (ex. « cet user édite-t-il SON projet ? »).

IApiKeyCapabilities#

interface IApiKeyCapabilities

Capacités/contraintes d’émission des clés API — exposées à la console (« Mes clés ») pour un formulaire de création honnête : plafond par porteur, catalogue de scopes, préfixe public, durée par défaut. Aucune valeur sensible (config publique : le préfixe figure déjà dans chaque clé).

IApiKeyCreated#

interface IApiKeyCreated extends IApiKeyView

Résultat d’une création de clé — la vue publique + le token en clair. Le token n’est disponible qu’ICI, une seule fois : il n’est jamais stocké (seul son sha256 l’est) ni re-dérivable. La console l’affiche puis l’oublie.

IApiKeyView#

interface IApiKeyView

Vue publique d’une clé API (PAT) — projection de IAccessTokenRecord sans le secret ni son hash (jamais exposés après création). C’est la forme renvoyée par la console (« mes clés ») et le data plane Studio.

IAuditEvent#

interface IAuditEvent

Un événement de sécurité journalisé. id/ts sont posés par l’AuditService (l’émetteur ne fournit qu’un IAuditEventDraft) → un seul appel système d’horodatage, centralisé hors des points d’émission.

IAuditEventFlags#

interface IAuditEventFlags

Drapeaux de présence de matériel sensible (jamais la valeur).

IAuditListQuery#

interface IAuditListQuery extends IPageQuery

Filtre de lecture du journal d’audit (console Studio P6.15, data plane P6.14 Lot 3) — IPageQuery + les critères propres au journal. Tous les critères sont AND ; absents = non filtrant.

IAuditSink#

interface IAuditSink

Face émission du journal, vue par les points sensibles (firewall, authenticators, controllers OAuth/WebAuthn). record est synchrone et fire-and-forget : l’audit ne doit JAMAIS bloquer ni faire échouer le flux métier (un store en panne se solde par un log d’erreur, pas par un login KO). No-op à coût nul si l’audit est désactivé.

IAuditStore#

interface IAuditStore

Journal d’audit append-only (tamper-evident) — état serveur des événements de sécurité. Pluggable par backend (mémoire/fichier/ORM/Loki) comme ITokenStore. La référence mémoire borne le volume (anti-fuite) ; un backend partagé (ORM/Redis) sert le multi-pod et la rétention longue.

IAuthenticator#

interface IAuthenticator

Stratégie d’authentification — pattern « authenticator » : une classe = une façon de prouver qui on est. Pas de Bridge/Factory (héritage Passport/YAML abandonné).

IAuthorizationService#

interface IAuthorizationService

Service d’autorisation (niveau C de la sécurité, P6) — décide si un token a le droit d’effectuer une action (attribute) sur un sujet (subject).

ICreateApiKeyOptions#

interface ICreateApiKeyOptions

Options de création d’une clé API.

IFirewall#

interface IFirewall extends IFirewallGate

Orchestrateur de sécurité — branché dans le pipeline HTTP/WS de @nodefony/http.

IIssuerPolicy#

interface IIssuerPolicy

Ce qu’on exige du paramètre iss renvoyé par le serveur d’autorisation (RFC 9207).

IJwtKeystore#

interface IJwtKeystore

Source du matériel cryptographique de signature des JWT.

IJwtSigningKey#

interface IJwtSigningKey

Clé active de signature résolue par le keystore — la clé privée Ed25519 plus son kid (à poser dans l’en-tête JWT) et l’algorithme JWA.

ILogoutRequest#

interface ILogoutRequest

Ce que porte une déconnexion initiée par l’application (OpenID Connect RP-Initiated Logout 1.0 §2).

ILogoutTokenClaims#

interface ILogoutTokenClaims

Ce qu’un jeton de déconnexion VÉRIFIÉ désigne (OpenID Connect Back-Channel Logout 1.0 §2.4) : au moins l’un de subject et sid.

IOAuthProvider#

interface IOAuthProvider

Adaptateur d’un fournisseur OAuth/OIDC, façade UNIFORME au-dessus d’un client OAuth 2.0 — masque les divergences entre fournisseurs derrière un contrat stable consommé par OAuth2Service :

IResourcePermission#

interface IResourcePermission

Permission fine-grained sur une ressource (modèle GitHub fine-grained PAT).

ISecuredArea#

interface ISecuredArea extends ISecurityZone

Zone sécurisée — un pattern d’URL + la liste des authenticators à exécuter.

IToken#

interface IToken

Jeton de sécurité — porte l’identité (authentifiée ou non) d’une requête.

ITokenListQuery#

interface ITokenListQuery extends IPageQuery

Requête de listing paginé de jetons (data plane admin) — le contrat de page standard du core (IPageQuery) enrichi des filtres propres aux jetons. Tous portables au Criteria (subjectId indexé, colonnes simples) → pas de SQL natif, le helper paginate() d’orm-core suffit côté ORM.

ITokenStore#

interface ITokenStore extends ISortableSource

Contrat du store de jetons — implémentations enregistrées via registerTokenStore, sélectionnées par config. Toutes les opérations sont asynchrones (un backend ORM/Redis fait des I/O ; la référence mémoire résout immédiatement).

ITokenUsage#

interface ITokenUsage

Contexte d’un usage de jeton (audit « last used »).

ITotpEnrollmentSummary#

interface ITotpEnrollmentSummary

Vue d’un enrôlement 2FA pour l’INTROSPECTION admin (« qui a activé le 2FA, qui est resté en attente de confirmation »).

ITotpListQuery#

interface ITotpListQuery extends IPageQuery

Requête de listing des enrôlements 2FA — IPageQuery + les filtres qui ont un sens ici. q (hérité) = préfixe d’userId (retrouver un id partiel collé depuis la console).

ITotpSecret#

interface ITotpSecret

Secret TOTP d’un utilisateur (2FA) — un seul par utilisateur (clé = userId).

ITotpSecretStore#

interface ITotpSecretStore

Store pluggable du secret TOTP par utilisateur — découple le cœur du backend de persistance (mémoire / fichier / ORM / Redis). Convention-frère d’IWebAuthnCredentialStore / ITokenStore : le builtin memory est sans dépendance, les adapters lourds s’enregistrent depuis leur propre module.

IWebAuthnCredential#

interface IWebAuthnCredential

Enregistrement d’un credential WebAuthn / passkey côté serveur — le credentialRecord de WebAuthn L3 §7.1 (produit par la cérémonie d’enregistrement, relu et mis à jour à chaque authentification §7.2).

IWebAuthnCredentialStore#

interface IWebAuthnCredentialStore

Store pluggable des credentials WebAuthn — découple le cœur du backend de persistance (mémoire / ORM / Redis). Convention-frère d’ITokenStore : le builtin memory est sans dépendance, les adapters lourds s’enregistrent depuis leur propre module (inversion de dépendance).

IWebAuthnCredentialSummary#

interface IWebAuthnCredentialSummary

Vue d’une passkey pour l’INTROSPECTION admin (« quels appareils portent des passkeys, lesquelles meurent avec leur appareil »).

IWebAuthnListQuery#

interface IWebAuthnListQuery extends IPageQuery

Requête de listing des passkeys — IPageQuery + les filtres qui ont un sens ici. q (hérité) = préfixe d’userId.

IWebhookEndpoint#

interface IWebhookEndpoint

Endpoint webhook sortant — une destination que Nodefony notifie quand un événement souscrit survient (modèle façon GitHub/Stripe).

IWebhookListQuery#

interface IWebhookListQuery extends IPageQuery

Requête de listing paginé d’endpoints webhook (data plane admin) — le contrat de page standard du core (IPageQuery) enrichi des filtres propres aux endpoints.

IWebhookStore#

interface IWebhookStore extends ISortableSource

Persistance des endpoints webhook (configuration durable, pas un cache). Backend interchangeable (Memory dev/test · Drizzle SQL · Mongoose) via le registre ../src/webhook/webhookStoreRegistry. Redis n’est PAS un store d’endpoints (config durable ≠ éphémère) — il servira la queue de livraison cross-pod (slice cluster), pas ce contrat.

TotpSecretUpdate#

interface TotpSecretUpdate

Champs mutables d’un secret TOTP (patch partiel).

WebAuthnAuthUpdate#

interface WebAuthnAuthUpdate

État mis à jour après une authentification réussie (WebAuthn §7.2).

Types (7)#

AuditCategory#

type AuditCategory = "auth" | "authz" | "token" | "session" | "oauth" | "webauthn" | "csrf" | "cors" | "ws" | "webhook" | "config"

Sous-système de sécurité concerné — axe de filtrage principal de la console d’audit (Studio P6.15). Fermé : la liste des sous-systèmes est stable.

AuditOutcome#

type AuditOutcome = "success" | "failure" | "denied"

Issue d’une action de sécurité. La distinction failure/denied est utile à l’auditeur : failure = l’acteur a échoué une preuve (brute-force, signature invalide) ; denied = une politique a refusé un acteur même bien formé (rôle manquant, origine interdite, plancher WS) — signal d’accès non autorisé.

IAuditEventDraft#

type IAuditEventDraft = Omit<IAuditEvent, "id" | "ts">

Champs fournis par l’émetteur d’un événement — l’AuditService y ajoute id + ts. Garde les points d’émission concis et sans appel système d’horloge.

TokenRevokeReason#

type TokenRevokeReason = "logout" | "rotated" | "reuse_detected" | "manual" | "compromised" | "subject_disabled" | "expired_cleanup"

Raison de révocation d’un jeton — tracée pour l’audit de sécurité.

TokenStatus#

type TokenStatus = "active" | "expired" | "revoked"

État de vie d’un jeton — partition exhaustive, évaluée révoqué → expiré → actif.

WebhookEndpointSummary#

type WebhookEndpointSummary = Omit<IWebhookEndpoint, "secretEnc">

Vue publique d’un endpoint (DTO console admin) — sans le secret chiffré. Le secret en clair n’est renvoyé qu’une fois, à la création/rotation.

WebhookEndpointUpdate#

type WebhookEndpointUpdate = Partial<Pick<IWebhookEndpoint, "url" | "secretEnc" | "events" | "enabled" | "description" | "updatedAt" | "lastDeliveryAt" | "lastDeliveryStatus" | "lastDeliveryError" | "failureCount" | "metadata">>

Champs mutables d’un endpoint (PATCH). id/createdAt/createdBy/tenantId sont immuables après création.

Énumérations (1)#

VoterVote#

enum VoterVote { GRANT = "GRANT", DENY = "DENY", ABSTAIN = "ABSTAIN" }

Vote d’un IAccessVoter. Stratégie firewall = affirmative + DENY veto : un seul DENY bloque ; sinon un GRANT suffit ; tous ABSTAIN → DENY (Zero Trust).


← Toutes les références d’API