Я ищу идеи, как реализовать двухфакторную аутентификацию (2FA) с помощью spring безопасности OAuth2. Требование состоит в том, что пользователю требуется двухфакторная аутентификация только для конкретных приложений с конфиденциальной информацией. Эти веб-приложения имеют свои собственные идентификаторы клиентов.
Одна идея, которая возникла у меня в голове, заключалась бы в том, чтобы "неправильно использовать" страницу утверждения области, чтобы заставить пользователя вводить код 2FA/PIN (или что-то еще).
Пример потоков будет выглядеть так:
Доступ к приложениям без и с помощью 2FA
- Пользователь вышел из системы
- Пользователь обращается к приложению A, которое не требует 2FA
- Перенаправление на приложение OAuth, вход в систему с именем пользователя и паролем
- Перенаправлено обратно в приложение A и пользователь выполнил вход
- Пользователь обращается к приложению B, которое также не требует 2FA
- Перенаправление на приложение OAuth, перенаправление обратно в приложение B, а пользователь напрямую зарегистрирован
- Пользователь получает доступ к приложению S, для которого требуется 2FA
- Перенаправление на приложение OAuth, пользователю необходимо дополнительно предоставить токен 2FA
- Перенаправлено обратно в приложение S и пользователь зарегистрирован
Прямой доступ к приложению с помощью 2FA
- Пользователь вышел из системы
- Пользователь получает доступ к приложению S, для которого требуется 2FA
- Перенаправление на приложение OAuth, вход в систему с именем пользователя и паролем, пользователю необходимо дополнительно указать токен 2FA
- Перенаправлено обратно в приложение S и пользователь зарегистрирован
Есть ли у вас другие идеи относительно этого?