O Radius é um protocolo de autenticação / autorização / contabilidade da rede. Ele opera na camada 3 no modelo OSI.
Seu aplicativo da Web opera na camada 7.
Então, há um pouco de mis-match aqui. Você pode usar o Radius para autenticar conexões de rede, como WiFi ou portas de rede, mas precisa de algo baseado em http para seu aplicativo da Web.
Estou fazendo algumas suposições, mas parece que você tem um servidor Radius para autenticar usuários em sua rede e aproveitou o mesmo banco de dados de usuários para autenticar usuários em seu aplicativo da web. Quer o aplicativo da Web esteja ou não falando o protocolo Radius para autenticar usuários, seus usuários não estão falando Radius quando eles inserem um nome de usuário e senha em uma página da Web, então o Radius não vai ajudá-lo com isso - precisa ser feito em o aplicativo da web.
Se o seu aplicativo da Web tiver acesso ao servidor radius, talvez seja possível determinar qual usuário é autenticado e autorizar / prompt do OTP com base nisso, mas essa é a lógica do aplicativo da web. Nenhuma quantidade de configuração no FreeRadius pode conseguir isso para você.
Então, eu recomendo dar um passo para trás e considerar onde seus dados de usuário estão armazenados. Enquanto você pode estar autenticando em um servidor freeRadius, o Radius é apenas um protocolo e, no backend, há um banco de dados de usuários. Este poderia ser um servidor LDAP, um banco de dados SQL, pam ou apenas um arquivo de texto simples.
Supondo que você tenha um banco de dados de usuário comum, você pode adicionar algum tipo de aplicativo de logon único Oauth / SAML (Okta e PingID são alguns exemplos comerciais) ao fluxo de autenticação de cada serviço, para que um logon um lugar entra em vigor em outro. Com o SSO, você pode modificar seu aplicativo da Web para exigir o segundo fator em determinados pontos (ele precisaria saber o segredo OTP existente do usuário ou exigir que ele configurasse outro para essa finalidade) ou você poderia usar algum tipo de política e reauth se a tecnologia SSO que você usa suportar.
Em conclusão, não consigo ver uma maneira de fazer isso no freeRadius sozinho, e mesmo se você pudesse, você provavelmente não deveria. E para fazer a parte de autorização, você sempre precisará modificar o aplicativo, a menos que você implemente algum proxy horrível do tipo "homem no meio", o que compromete totalmente a segurança.