RBAC-10: POST /authorize nimmt den Mandanten entgegen und bindet modulgebundene Rechte an die Modulaktivierung (fail closed).
Umsetzung
Enforcer.AuthorizeRequest: mit Mandant AuthorizeForTenant (Feature-Flag), ohne Mandant nur Grundrecht, nie fuer modulgebundene Rechte (tenant_required); Grund module_inactive/denied/tenant_required in der Antwort
policyapi: Slug-Pruefung (400), optionale Bindung des Service-Tokens an Mandanten (NEXARCH_POLICY_ALLOWED_TENANTS, 403), NEXARCH_POLICY_FLAG_CACHE_TTL_SECONDS
Migration 0012_dms_module_scopes (up/down): 38 dms.*-Regeln an das Flag dms gebunden
DMS policyclient: sendet den Mandanten (Token, sonst Instanz-Mandant), Cache je Mandant; App verlangt NEXARCH_DMS_APP_TENANT_SLUG bei aktivem Policy-Endpunkt
Rolle bleibt Angabe des Moduls; policy_rules gelten fuer alle Mandanten gleich; ohne ALLOWED_TENANTS darf jeder Token-Inhaber jeden gueltigen Mandanten angeben; Flag dms muss vor dem Ausrollen je Mandant gesetzt werden. Details: docs/RBAC-10-PRUEFPROTOKOLL.md.
RBAC-10: `POST /authorize` nimmt den Mandanten entgegen und bindet modulgebundene Rechte an die Modulaktivierung (fail closed).
## Umsetzung
- `Enforcer.AuthorizeRequest`: mit Mandant `AuthorizeForTenant` (Feature-Flag), ohne Mandant nur Grundrecht, nie fuer modulgebundene Rechte (`tenant_required`); Grund `module_inactive`/`denied`/`tenant_required` in der Antwort
- `policyapi`: Slug-Pruefung (400), optionale Bindung des Service-Tokens an Mandanten (`NEXARCH_POLICY_ALLOWED_TENANTS`, 403), `NEXARCH_POLICY_FLAG_CACHE_TTL_SECONDS`
- Migration `0012_dms_module_scopes` (up/down): 38 `dms.*`-Regeln an das Flag `dms` gebunden
- DMS `policyclient`: sendet den Mandanten (Token, sonst Instanz-Mandant), Cache je Mandant; App verlangt `NEXARCH_DMS_APP_TENANT_SLUG` bei aktivem Policy-Endpunkt
## Pruefungen (Entwicklungshost 204, Wegwerf-Cluster)
- Core `policy`, `policyapi`, `flag`, `rbac`, `moduletrust`, `auth` gruen; DMS `policyclient`, `apiwiring`, `cmis`, `cmd/app` gruen; `go vet`, `gofmt`, Port-/Routenskripte, `migrations-fresh-check.sh` (Core Registry 30) ok
- Ende-zu-Ende `scripts/e2e-core-dms.sh`: 10 Teilfaelle bestanden (Modul aktiv 200, abgewaehlt 403, Mandant Pflicht, Token-Bindung, Ausfall 503)
- 3 Fix-Iterationen, alle im Test-/Importcode
## Grenzen
Rolle bleibt Angabe des Moduls; `policy_rules` gelten fuer alle Mandanten gleich; ohne `ALLOWED_TENANTS` darf jeder Token-Inhaber jeden gueltigen Mandanten angeben; Flag `dms` muss vor dem Ausrollen je Mandant gesetzt werden. Details: `docs/RBAC-10-PRUEFPROTOKOLL.md`.
Basis: `integration/gesamtprojekt`. Kein Merge.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
patrick
added 5 commits 2026-09-21 23:44:25 +02:00
POST /authorize nimmt optional den Mandanten entgegen und wertet modulgebundene Rechte ueber AuthorizeForTenant aus (fail closed). Mandant ist Pflicht fuer Rechte mit Modul-Bindung, das Service-Token laesst sich auf Mandanten einschraenken. Migration 0012 bindet die dms.*-Rechte an das Flag dms. Der DMS-policyclient sendet den Mandanten mit und trennt den Cache je Mandant.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
RBAC-10:
POST /authorizenimmt den Mandanten entgegen und bindet modulgebundene Rechte an die Modulaktivierung (fail closed).Umsetzung
Enforcer.AuthorizeRequest: mit MandantAuthorizeForTenant(Feature-Flag), ohne Mandant nur Grundrecht, nie fuer modulgebundene Rechte (tenant_required); Grundmodule_inactive/denied/tenant_requiredin der Antwortpolicyapi: Slug-Pruefung (400), optionale Bindung des Service-Tokens an Mandanten (NEXARCH_POLICY_ALLOWED_TENANTS, 403),NEXARCH_POLICY_FLAG_CACHE_TTL_SECONDS0012_dms_module_scopes(up/down): 38dms.*-Regeln an das Flagdmsgebundenpolicyclient: sendet den Mandanten (Token, sonst Instanz-Mandant), Cache je Mandant; App verlangtNEXARCH_DMS_APP_TENANT_SLUGbei aktivem Policy-EndpunktPruefungen (Entwicklungshost 204, Wegwerf-Cluster)
policy,policyapi,flag,rbac,moduletrust,authgruen; DMSpolicyclient,apiwiring,cmis,cmd/appgruen;go vet,gofmt, Port-/Routenskripte,migrations-fresh-check.sh(Core Registry 30) okscripts/e2e-core-dms.sh: 10 Teilfaelle bestanden (Modul aktiv 200, abgewaehlt 403, Mandant Pflicht, Token-Bindung, Ausfall 503)Grenzen
Rolle bleibt Angabe des Moduls;
policy_rulesgelten fuer alle Mandanten gleich; ohneALLOWED_TENANTSdarf jeder Token-Inhaber jeden gueltigen Mandanten angeben; Flagdmsmuss vor dem Ausrollen je Mandant gesetzt werden. Details:docs/RBAC-10-PRUEFPROTOKOLL.md.Basis:
integration/gesamtprojekt. Kein Merge.🤖 Generated with Claude Code
Pull request closed