Frontends auf Bearer: Portal-BFF, workflow-approvals, workflow-tasks #412

Merged
patrick merged 3 commits from feat/frontends-bearer into main 2026-10-28 15:05:39 +01:00
Owner

Änderung (Arbeitskarte D-05, Schritte 1 und 2)

  • Portal-BFF: /api/worklist nimmt zusätzlich X-Workflow-Token (Zielmodul workflow, PORTAL_WORKFLOW_TOKEN_AUDIENCE, Standard workflow). Das Token wird mit Core-JWKS geprüft und muss denselben Benutzer und Mandanten wie das Portal-Token haben, sonst 401. Der Aufruf an die Workflow-API geht dann per Authorization: Bearer, ohne X-User-Id. Ohne das Token bleibt der Übergangsweg.
  • workflow-approvals, workflow-tasks: Mit NEXT_PUBLIC_CORE_API_BASE laufen die Aufrufe über createSession (module: workflow) mit Bearer. Die BFF-Routen reichen Authorization weiter und ignorieren userId/tenant aus der URL. Die Identität kommt aus der Sitzung statt aus ?user=. Ohne die Variable bleibt das alte Verhalten.
  • Tests: Portal 72/72, workflow-approvals 9/9, workflow-tasks 11/11, kein neuer tsc-Fehler, next build für workflow-tasks ok.

Voraussetzungen

  • Core: workflow in NEXARCH_ACCOUNT_MODULE_AUDIENCES, account-api läuft.
  • Workflow-App: NEXARCH_WORKFLOW_APP_JWKS_URL gesetzt. NEXARCH_WORKFLOW_APP_ALLOW_HEADER_AUTH bleibt, bis auch workflow-cases und routing-rules umgestellt sind (Schritt 3).
  • Nicht gegen einen echten Core getestet.

🤖 Generated with Claude Code

## Änderung (Arbeitskarte D-05, Schritte 1 und 2) - **Portal-BFF:** `/api/worklist` nimmt zusätzlich `X-Workflow-Token` (Zielmodul `workflow`, `PORTAL_WORKFLOW_TOKEN_AUDIENCE`, Standard `workflow`). Das Token wird mit Core-JWKS geprüft und muss denselben Benutzer und Mandanten wie das Portal-Token haben, sonst 401. Der Aufruf an die Workflow-API geht dann per `Authorization: Bearer`, ohne `X-User-Id`. Ohne das Token bleibt der Übergangsweg. - **workflow-approvals, workflow-tasks:** Mit `NEXT_PUBLIC_CORE_API_BASE` laufen die Aufrufe über `createSession` (`module: workflow`) mit Bearer. Die BFF-Routen reichen `Authorization` weiter und ignorieren `userId`/`tenant` aus der URL. Die Identität kommt aus der Sitzung statt aus `?user=`. Ohne die Variable bleibt das alte Verhalten. - Tests: Portal 72/72, workflow-approvals 9/9, workflow-tasks 11/11, kein neuer tsc-Fehler, `next build` für workflow-tasks ok. ## Voraussetzungen - Core: `workflow` in `NEXARCH_ACCOUNT_MODULE_AUDIENCES`, `account-api` läuft. - Workflow-App: `NEXARCH_WORKFLOW_APP_JWKS_URL` gesetzt. `NEXARCH_WORKFLOW_APP_ALLOW_HEADER_AUTH` bleibt, bis auch `workflow-cases` und `routing-rules` umgestellt sind (Schritt 3). - Nicht gegen einen echten Core getestet. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
patrick added 2 commits 2026-10-28 15:02:18 +01:00
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
workflow-approvals, workflow-tasks: Sitzung und Bearer statt X-User-Id aus der URL
CI / Web-Barrierefreiheitspruefung (axe, Tastatur, Reflow, Textabstaende) (push) Canceled after 0s
CI / Web-Barrierefreiheitspruefung (axe, Tastatur, Reflow, Textabstaende) (pull_request) Canceled after 0s
CI / Core-Modul (Build/Vet/Test) (push) Successful in 37s
CI / DMS Security-Test-Gate (AC5, Merge-Gate) (push) Successful in 3s
CI / Connect Security-Test-Gate (QA-01 AC4, Merge-Gate) (push) Successful in 2s
CI / DMS-Modul Supply-Chain-Scan (govulncheck) (push) Failing after 12s
CI / Web (dms-browser) (push) Failing after 49s
CI / Web (pdf-viewer) (push) Failing after 35s
CI / Web (shl) (push) Failing after 7s
CI / Core-Modul (Build/Vet/Test) (pull_request) Successful in 39s
CI / DMS Security-Test-Gate (AC5, Merge-Gate) (pull_request) Successful in 2s
CI / Connect Security-Test-Gate (QA-01 AC4, Merge-Gate) (pull_request) Successful in 3s
CI / DMS-Modul Supply-Chain-Scan (govulncheck) (pull_request) Failing after 13s
CI / Web (dms-browser) (pull_request) Failing after 56s
CI / Web (pdf-viewer) (pull_request) Failing after 47s
CI / Web (shl) (pull_request) Failing after 8s
Core-Schnittstellen-Vertragstests / contract-tests (pull_request) Successful in 13m36s
Supply-Chain-Scan (Go) / govulncheck (pull_request) Failing after 46s
Supply-Chain-Scan (npm) / npm-audit (pull_request) Failing after 1m15s
Core-Pflichttest-Gate / pflichttest-gate (pull_request) Successful in 13m41s
RBAC-Rollenhierarchie-Pflichtgate / rbac-policy-invariant (pull_request) Successful in 13m30s
CI / DMS-Modul (Lint/Build/Test/Coverage/Artefakt) (pull_request) Canceled after 0s
CI / DMS-Modul (Lint/Build/Test/Coverage/Artefakt) (push) Canceled after 0s
0032aa7d81
Mit NEXT_PUBLIC_CORE_API_BASE holen die Frontends ein workflow-Token ueber die
Sitzung und senden Authorization; die BFF-Routen reichen es weiter und ignorieren
userId/tenant aus der URL. Ohne die Variable bleibt der Uebergangsweg.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
patrick added 1 commit 2026-10-28 15:05:37 +01:00
workflow-cases, routing-rules: Sitzung und Bearer statt X-User-Id aus der URL
CI / Web-Barrierefreiheitspruefung (axe, Tastatur, Reflow, Textabstaende) (push) Canceled after 0s
CI / Web-Barrierefreiheitspruefung (axe, Tastatur, Reflow, Textabstaende) (pull_request) Canceled after 0s
CI / Core-Modul (Build/Vet/Test) (push) Successful in 40s
CI / DMS Security-Test-Gate (AC5, Merge-Gate) (push) Successful in 4s
CI / Connect Security-Test-Gate (QA-01 AC4, Merge-Gate) (push) Successful in 3s
CI / DMS-Modul Supply-Chain-Scan (govulncheck) (push) Failing after 14s
CI / Web (dms-browser) (push) Failing after 54s
CI / Web (pdf-viewer) (push) Failing after 37s
CI / Web (shl) (push) Failing after 8s
CI / Core-Modul (Build/Vet/Test) (pull_request) Successful in 36s
CI / DMS Security-Test-Gate (AC5, Merge-Gate) (pull_request) Successful in 2s
CI / Connect Security-Test-Gate (QA-01 AC4, Merge-Gate) (pull_request) Successful in 2s
CI / DMS-Modul Supply-Chain-Scan (govulncheck) (pull_request) Failing after 12s
CI / Web (dms-browser) (pull_request) Failing after 47s
CI / Web (pdf-viewer) (pull_request) Failing after 36s
CI / Web (shl) (pull_request) Failing after 7s
Core-Schnittstellen-Vertragstests / contract-tests (pull_request) Successful in 13m40s
Supply-Chain-Scan (Go) / govulncheck (pull_request) Failing after 47s
Supply-Chain-Scan (npm) / npm-audit (pull_request) Failing after 1m19s
Core-Pflichttest-Gate / pflichttest-gate (pull_request) Successful in 13m50s
RBAC-Rollenhierarchie-Pflichtgate / rbac-policy-invariant (pull_request) Successful in 13m33s
CI / DMS-Modul (Lint/Build/Test/Coverage/Artefakt) (pull_request) Canceled after 0s
CI / DMS-Modul (Lint/Build/Test/Coverage/Artefakt) (push) Canceled after 0s
77b46945f2
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Author
Owner

Schritt 3 ergänzt: workflow-cases und routing-rules wie workflow-approvals und workflow-tasks auf Sitzung und Bearer umgestellt (8 BFF-Routen, Libs, Seiten, je ein Bearer-Test). Tests auf 131: workflow-cases 9/9, routing-rules 11/11, kein neuer tsc-Fehler. Der Übergangsschalter NEXARCH_WORKFLOW_APP_ALLOW_HEADER_AUTH kann erst entfallen, wenn alle Frontends mit NEXT_PUBLIC_CORE_API_BASE gebaut sind.

🤖 Generated with Claude Code

Schritt 3 ergänzt: `workflow-cases` und `routing-rules` wie `workflow-approvals` und `workflow-tasks` auf Sitzung und Bearer umgestellt (8 BFF-Routen, Libs, Seiten, je ein Bearer-Test). Tests auf 131: workflow-cases 9/9, routing-rules 11/11, kein neuer tsc-Fehler. Der Übergangsschalter `NEXARCH_WORKFLOW_APP_ALLOW_HEADER_AUTH` kann erst entfallen, wenn alle Frontends mit `NEXT_PUBLIC_CORE_API_BASE` gebaut sind. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
patrick merged commit 21838e87d0 into main 2026-10-28 15:05:39 +01:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: scripte/nexarch#412