Context
Your API has hand-rolled auth: a users table, a password hash, a token you sign yourself. It works, and it is a liability — password reset, MFA, lockout and session revocation are all still yours to build.
Put Keycloak in front of it. The service stops issuing identity and starts verifying it, which is a smaller job with sharper edges: a token you did not sign, signed by a key that can change under you, carrying claims you have to decide whether to trust.
Run Keycloak in Compose, protect the API, and then attack it.