Thanks everyone for the responses, I finally decided to build our own due to following requirements:
- Tenant-level MFA policy / Realm level (ENABLED / DISABLED) managed via Our Portal i.e. calls Keycloak REST API to update realm level configuration
- Per-user MFA opt-in (mfa.enabled user attribute)
- SSO users (federated identity) exempt from MFA
- Configurable OTP parameters per realm
- Full i18n support per tenant-branded theme
- Future extensibility for SMS / WhatsApp via MFAChannelProvider interface
- Compatible with Keycloak
v25.0.6.
Though I liked for-keycloak/email-otp-authenticator.
Criteria Finding Verdict
Device trust✅ Trusted IP + device cookie mechanism✅
Realm Level policy modelNo — configuration via Keycloak Admin Console only, not external realm attributes❌ Blocking
i18n✅ Multi-language support✅
KC 25 compatibilityTested against KC 26.x only. KC 25.0.6 (our version) not listed.❌ Untested
LicenseUnlicense — most permissive, no legal blocker✅
MaintenanceActive — last release May 2026 (v1.4.2), 20 releases total✅
MFAChannelProvider extensibilityTightly coupled to email — no interface for SMS/WhatsApp❌
OTP generation securityNot confirmed — no public security audit or code review for CSPRNG usage⚠️
Resend capability✅ Supported✅
SSO exemption via federated identityNo — no getFederatedIdentities() detection❌ Blocking
Stars / community vetting22 stars, 9 forks — very low adoption, minimal community security review❌
-Regards,
Navin