Aller au contenu

Auth · Entitlements · Sécurité — état d'implémentation (2026-06)

Page de suivi : ce qui a été construit pour l'auth, l'autorisation runtime et le durcissement sécurité, où vit le code, comment tester en dev local, et ce qui reste. Tient le doc interne au courant du process.

1. Vue d'ensemble

Brique Repo / module État Détail
dynors-auth (émetteur identité) dynors-platform/auth MVP codé (dev-local) login email/password (BCrypt), JWT RS256 + kid, JWKS, refresh rotation, cookies HttpOnly, erreurs génériques. Clé éphémère en dev, fail-fast prod sans clé. LDAP = backlog.
dynors-entitlements (autorisation runtime) dynors-platform/entitlements Slice dev-local codé schéma entitlement, ingestion idempotente, ACL billing, API /check /me /by-subject /grant, audit. Consumer bus + transit SLY = backlog.
dynors-entitlements-client (client partagé) dynors-extensions/.../entitlements-client Codé EntitlementsClient + EntitlementsGuard, fail-closed (E1), cache TTL, 403 générique via StandardErrorCode.FORBIDDEN.
JWT asymétrique (validation) core/security Codé (ADR-0013) RS256/ES256/EdDSA + kid/rotation, JwtKeys, garde prod (longueur, public key). HS256 transitoire.
Transit SLY par app selebeyone + core/commons Durci HKDF (ADR-0008), modes SHARED/DUAL/PER_APP, fail-fast prod.
LDAP dynors-extensions/auth-ldap Durci bind/AD, StartTLS + garde prod (pas de ldap:// nu, pas de bind anonyme).
SIRRAT (déploiement) dynors-internal/.../sirrat Durci scopes + isolation cercle, F4 secret en clair, gardes prod.
Vault dynors-ops/vault Templates policies par app/cercle, deny inter-app/cercle (à appliquer).
FISCAL (facture) dynors-internal/.../fiscal Option A retenue lancement Sénégal en DECLARATION_ONLY ; transformation 12 mois découplée.

2. Conventions à respecter (ne pas réinventer)

Voir la règle .cursor/rules/entitlements-auth-erreurs-conventions.mdc : - Entitlements via le client partagé (jamais recopier un guard), appels via SLY. - Erreurs via StandardErrorCode + DynorsApiException.of (jamais de code inventé, jamais de fuite scope/permission/mécanisme au client). - JWT : émission dynors-auth, validation dynors-security (ADR-0013). - Secrets en Vault, versionnés par kid ; pas de SNAPSHOT ; versions figées par le BOM.

3. Dev local vs prod (ne pas mélanger)

Tableau complet : docs/architecture/DEV_VS_PROD_RACCOURCIS_2026-06-14.md. Règle : tout raccourci dev est profil-gated + étiqueté DEV ONLY + protégé par une garde prod (ex. clé JWT éphémère en dev → fail-fast prod ; entitlements bypass en dev → refusé en prod).

4. Tester en dev local

  • dynors-auth : gradle bootRun --args='--spring.profiles.active=local' (port 8091) — compte demo@dawalale.local / demo1234, voir dynors-platform/auth/README.md.
  • dynors-entitlements : gradle bootRun --args='--spring.profiles.active=local' (port 8092), voir dynors-platform/entitlements/README.md.

5. Publication & mise en service

Ordre artefacts/BOM/tests/déploiement : docs/architecture/PLAN_PUBLICATION_REPOS_TESTS_2026-06-14.md. Readiness lancement 3 mois : docs/architecture/READINESS_LANCEMENT_3_MOIS_2026-06-14.md.

6. Références

  • ADR : 0008 (transit), 0011 (audience), 0013 (JWT asymétrique).
  • Specs : dynors-auth, dynors-entitlements.
  • Sécurité (repo principal docs/security/) : audit, remédiation, runbook branchement, guide JWT, cas d'usage auth/LDAP, entitlements/billing, notes de limites.