feat(relay): auth middleware — Bearer/DPoP JWT validation extractor (MM-139)
Adds crates/relay/src/auth/mod.rs with an Axum FromRequestParts extractor
that validates HS256 JWT access/refresh tokens and DPoP-bound tokens per
RFC 9449.
- AuthenticatedUser extractor yields did, AuthScope, and TokenType
- JWT validation: HS256 signature, exp (leeway=0), aud (when server_did set), sub
- DPoP validation: JWK thumbprint (RFC 7638), htm/htu, iat freshness, cnf.jkt binding
- New error codes: AuthenticationRequired and InvalidToken (both 401)
- jwt_secret ([u8; 32]) added to AppState; generated via OsRng at startup
- 12 unit tests covering all AC cases including RFC 7638 thumbprint vector