Public Access
feat(login): publish verify key as JWKS
Auth serves its Ed25519 public key at GET /.well-known/jwks.json, so Core can find the key by the token kid. Startup fails on a blank JWT_KID, because compose turns an unset value into "" and Core finds keys only by kid.
This commit is contained in:
1 parent
3a48ce0ff1
commit
600b0b143f
7 files changed
+110
-3
No files matched your search
@@ -18,7 +18,8 @@ To Be Played is split into three repositories:
|
||||
block for 15 minutes with `429 TOO_MANY_ATTEMPTS` and `Retry-After`. Unknown emails cost the same BCrypt time as a
|
||||
wrong password, and every failed login gets the same error.
|
||||
- JWT signed with **EdDSA (Ed25519)**. Auth holds the private key, Core only the public key, so Core can verify
|
||||
tokens but never create them. Tokens carry a `kid` header for key rotation.
|
||||
tokens but never create them. Tokens carry a `kid` header, and `GET /.well-known/jwks.json` publishes the
|
||||
public key as a JWK, so Core finds the right key after a rotation.
|
||||
- User settings: display name (unique, case-insensitive), Steam ID, language, dark mode.
|
||||
- Appearance settings synced across devices: accent color, corner style, wide layout, background and dashboard
|
||||
banner from the user's own game art. Only whitelisted presets and Steam app ids are stored, never raw CSS or URLs.
|
||||
@@ -102,7 +103,6 @@ Runs unit, WebMvc, persistence and integration tests plus the ArchUnit rules. Ne
|
||||
|
||||
## Roadmap
|
||||
|
||||
- JWKS endpoint (`/.well-known/jwks.json`), so Core fetches the public key and keys rotate without a redeploy.
|
||||
- Short-lived access token plus rotating refresh token in an httpOnly cookie, with CSRF protection. Today the token
|
||||
lives 24 h in `localStorage` and cannot be revoked.
|
||||
- Account deletion and data export.
|
||||
|
||||
Reference in new issue
Block a user