[ISS-2] authenticateApiRequest controleert expires_at niet: verlopen API-token blijft werken op de REST-routes #266

Open
opened 2026-09-27 18:38:35 +02:00 by janpeter · 0 comments
Owner

Beheerd door Scrum4Me — wijzigingen hier worden overschreven. Bron: https://thuis.jp-visser.nl/issues/cmuk1c1h500020c178kiclc9y

Status: investigating · Severity: s3_major · Gemeld door: mac:claude · Occurrences: 1 (laatst: 2026-09-27T16:30:45.113Z) · Aangemaakt: 2026-09-27T16:30:45.113Z

Registratie

Probleem

ApiToken.expires_at wordt in lib/api-auth.ts niet gecontroleerd. authenticateApiRequest() (regel 18-26) weigert een Bearer-token alleen bij revoked_at. Een token met een vervaldatum in het verleden blijft daardoor geldig op alle routes onder app/api die deze functie gebruiken (17 bestanden), terwijl de workers-UI het als "Verlopen" toont.

Geverifieerd

origin/main 773381cb (2026-09-27): grep -c expires_at lib/api-auth.ts geeft 0.

Afgesproken oplossing (akkoord JP 2026-09-27)

  • Token met expires_at <= now behandelen als ongeldig, met dezelfde 401 Unauthorized als een ingetrokken token.
  • Tests: verlopen geweigerd, zonder vervaldatum geaccepteerd, vervaldatum in de toekomst geaccepteerd.

Gevolg bij uitrol

Niet-ingetrokken tokens die al verlopen zijn, worden na de fix geweigerd. JP controleert dat zelf voor de merge.

Zelfde omissie in scrum4me-mcp src/auth.ts; daarvoor is een eigen issue op dat product aangemaakt. Gevonden tijdens de read-only review van IDEA-227, maar valt daarbuiten.

Onderzoek


2026-09-27T16:38:12.008Z — mac:claude

Fix staat klaar in PR #265 (branch fix/api-token-expiry, commit 9d0f51de). Nog niet gemerged; merge en uitrol wachten op opdracht van JP.

  • lib/api-auth.ts: Bearer-token met expires_at <= now krijgt dezelfde 401 als een ingetrokken token.
  • Nieuwe tests in __tests__/lib/api-auth.test.ts; de weiger-test faalde voor de fix.
  • tsc --noEmit schoon, npm test 2920 geslaagd / 6 overgeslagen.

Open: controle door JP op al verlopen, niet-ingetrokken tokens voor de merge.


2026-09-27T18:19:55.797Z — mac:claude

PR #265 is door JP gemerged op 2026-09-27 19:26 (merge-commit e1173b4a); de fix staat in main. Uitrol en sluiten van dit issue zijn aan JP.

Oplossing

Nog geen oplossing.

> Beheerd door Scrum4Me — wijzigingen hier worden overschreven. Bron: https://thuis.jp-visser.nl/issues/cmuk1c1h500020c178kiclc9y Status: investigating · Severity: s3_major · Gemeld door: mac:claude · Occurrences: 1 (laatst: 2026-09-27T16:30:45.113Z) · Aangemaakt: 2026-09-27T16:30:45.113Z ## Registratie ## Probleem `ApiToken.expires_at` wordt in `lib/api-auth.ts` niet gecontroleerd. `authenticateApiRequest()` (regel 18-26) weigert een Bearer-token alleen bij `revoked_at`. Een token met een vervaldatum in het verleden blijft daardoor geldig op alle routes onder `app/api` die deze functie gebruiken (17 bestanden), terwijl de workers-UI het als "Verlopen" toont. ## Geverifieerd origin/main `773381cb` (2026-09-27): `grep -c expires_at lib/api-auth.ts` geeft 0. ## Afgesproken oplossing (akkoord JP 2026-09-27) - Token met `expires_at <= now` behandelen als ongeldig, met dezelfde `401 Unauthorized` als een ingetrokken token. - Tests: verlopen geweigerd, zonder vervaldatum geaccepteerd, vervaldatum in de toekomst geaccepteerd. ## Gevolg bij uitrol Niet-ingetrokken tokens die al verlopen zijn, worden na de fix geweigerd. JP controleert dat zelf voor de merge. Zelfde omissie in scrum4me-mcp `src/auth.ts`; daarvoor is een eigen issue op dat product aangemaakt. Gevonden tijdens de read-only review van IDEA-227, maar valt daarbuiten. ## Onderzoek --- *2026-09-27T16:38:12.008Z — mac:claude* Fix staat klaar in PR https://git.jp-visser.nl/janpeter/Scrum4Me/pulls/265 (branch `fix/api-token-expiry`, commit `9d0f51de`). Nog niet gemerged; merge en uitrol wachten op opdracht van JP. - `lib/api-auth.ts`: Bearer-token met `expires_at <= now` krijgt dezelfde 401 als een ingetrokken token. - Nieuwe tests in `__tests__/lib/api-auth.test.ts`; de weiger-test faalde voor de fix. - `tsc --noEmit` schoon, `npm test` 2920 geslaagd / 6 overgeslagen. Open: controle door JP op al verlopen, niet-ingetrokken tokens voor de merge. --- *2026-09-27T18:19:55.797Z — mac:claude* PR #265 is door JP gemerged op 2026-09-27 19:26 (merge-commit `e1173b4a`); de fix staat in main. Uitrol en sluiten van dit issue zijn aan JP. ## Oplossing _Nog geen oplossing._ <!-- s4m:issue:cmuk1c1h500020c178kiclc9y -->
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
janpeter/Scrum4Me#266
No description provided.