Ajout de fonctionnalités
En plus du noyau dâAPIs et des frontends, les projets rĂ©els nĂ©cessitent souvent des fonctionnalitĂ©s supplĂ©mentaires pour assurer la sĂ©curitĂ©, le contrĂŽle dâaccĂšs et lâexĂ©cution de processus en arriĂšre-plan.
Lino facilite lâajout de ces capacitĂ©s de maniĂšre standardisĂ©e, les reflĂ©tant Ă la fois dans le backend (endpoints) et le frontend (applications Blazor).
Sécurité et Authentification
L'authentification est la base de tout systÚme sécurisé. Lino prend en charge l'authentification basée sur JWT (JSON Web Tokens), en utilisant le schéma Bearer dans les API.
Flux d'authentification typique :
1. L'utilisateur se connecte (via un endpoint ou une page dédiée).
2. Un JWT est émis avec des claims représentant l'identité, les rÎles et les permissions.
3. Chaque requĂȘte Ă l'API inclut le token dans l'en-tĂȘte : Authorization: Bearer <token>
4. Le middleware d'authentification valide le token en vérifiant la signature et l'expiration.
Autorisation basée sur les policies
Lino utilise les policies pour mettre en Ćuvre une autorisation granulaire :
- Chaque action peut nécessiter une policy spécifique (ex. : People.Read, People.Create).
- Les policies sont configurées via AddAuthorization.
- Les endpoints peuvent ĂȘtre protĂ©gĂ©s en dĂ©clarant :
.RequireAuthorization
Ajouter la sécurité aux projets Lino
Pour ajouter la sécurité à un projet, exécutez :
lino features auth add
L'assistant interactif CLI demandera les configurations suivantes :
- Service â service dans lequel les ressources de sĂ©curitĂ© seront configurĂ©es.
- Module â module spĂ©cifique oĂč la sĂ©curitĂ© sera installĂ©e (applicable uniquement aux services modulaires).
- DurĂ©e de vie du Access Token â durĂ©e de validitĂ© du token d'accĂšs.
- DurĂ©e de vie du Refresh Token â durĂ©e de validitĂ© du token de rafraĂźchissement.
- Type d'identifiant utilisateur â dĂ©finit le type de donnĂ©es utilisĂ© comme UserId (
int,longouGuid).
Ces paramĂštres garantissent que le pipeline d'authentification/autorisation est configurĂ© automatiquement, prĂȘt Ă ĂȘtre utilisĂ© dans les API et intĂ©grĂ© Ă Blazor.
Travaux en arriĂšre-plan
De nombreux systĂšmes nĂ©cessitent lâexĂ©cution de processus asynchrones en arriĂšre-plan, tels que :
- Envoi dâe-mails
- Génération de rapports
- Synchronisation avec des systĂšmes externes.
Lino prend en charge nativement Hangfire comme orchestrateur de jobs.
Avantages de Hangfire
- Exécution fiable des jobs asynchrones.
- Tableau de bord de surveillance intégré.
- Support des jobs récurrents ou planifiés.
- Persistance fiable des jobs dans la base de données.
IntĂ©gration dâĂ©vĂ©nements avec Outbox Message
Pour garantir la cohérence des intégrations asynchrones, Lino adopte le modÚle Outbox Message.
Lors de lâexĂ©cution dâune action mĂ©tier (ex. : crĂ©ation dâune commande), lâĂ©vĂ©nement correspondant (OrderCreated) est enregistrĂ© dans la table Outbox, dans la mĂȘme transaction qui persiste lâĂ©tat du domaine. Un processeur en arriĂšre-plan lit la table Outbox et publie les Ă©vĂ©nements dans les systĂšmes de messagerie (RabbitMQ, Kafka, etc.).
Avantages de lâOutbox :
- AtomicitĂ© â la base de donnĂ©es et les Ă©vĂ©nements publiĂ©s restent synchronisĂ©s.
- FiabilitĂ© â aucun Ă©vĂ©nement nâest perdu, mĂȘme en cas de dĂ©faillance.
- ScalabilitĂ© â plusieurs consommateurs peuvent traiter les Ă©vĂ©nements.
Ce modÚle garantit des intégrations sûres et résilientes dans les architectures distribuées.
GrĂące Ă ces fonctionnalitĂ©s supplĂ©mentaires, Lino offre une sĂ©curitĂ© robuste, un contrĂŽle dâaccĂšs granulaire et un traitement asynchrone fiable, rĂ©pondant aux exigences critiques des applications modernes en production.
Ajouter des fonctionnalités de Background Job aux projets Lino
Le traitement asynchrone est essentiel pour les tĂąches qui ne doivent pas bloquer le flux principal des requĂȘtes, telles que lâenvoi de notifications, la gĂ©nĂ©ration de rapports ou la publication dâĂ©vĂ©nements.
Lino permet dâactiver le support des Background Jobs (via des bibliothĂšques) avec une seule commande :
lino features background-job add
Le CLI demandera les paramĂštres de configuration suivants :
- Service â service dans lequel la fonctionnalitĂ© de Background Job sera ajoutĂ©e.
- BibliothĂšque â bibliothĂšque choisie pour lâexĂ©cution et la planification des jobs.
- Intervalle de vĂ©rification et de traitement - intervalle auquel la file dâattente est vĂ©rifiĂ©e pour rechercher de nouveaux messages Outbox.
- Nombre dâenregistrements - nombre maximal dâenregistrements traitĂ©s par cycle, contrĂŽlant le parallĂ©lisme et la consommation des ressources.
Ces options permettent de configurer le systĂšme de maniĂšre Ă©volutive et rĂ©siliente, garantissant lâexĂ©cution fiable des tĂąches en arriĂšre-plan.
