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) — comptedemo@dawalale.local / demo1234, voirdynors-platform/auth/README.md. - dynors-entitlements :
gradle bootRun --args='--spring.profiles.active=local'(port 8092), voirdynors-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.