I’m not sure what you mean by validation. The flow is, authenticate (I have a valid user), and present a token entry (keyed to the validated user via auth 1) confirm token? I’ll have to do some research because it seems fishy to me to have: 1. push from a ms product (cough, sorry), 2. a two digit verification code (is that not a bit, ah, short?). I’m a bit ignorant. As you point out, a lot will depend on the Admin.
As far as TOTP, it’s clear it has weaknesses, depending on how you generate and distribute keys. It does not need to be done with QR codes, though that’s the ‘easy’ solution and why it’s the most easily attacked. I’ve mostly hacked on: GitHub - poetaster/apache_2fa: Apache two-factor (2FA) authentication with Google Authenticator based on Time-based One-Time Password (TOTP) or HMAC-based one-time password (HOTP) Algorithms. As you mentioned, FoilAuth has a nice extra auth layer and crypto, so I feal quite at ease with it.
I’ve also been using Webauthm and a Yubikey for, for instance, proxmox credentials and that works quite well, but it’s also not bullet proof.