Привет!Помогите решить проблему с настройкой двухфакторной авторизации на FreeRadius.
FreeRADIUS Version 3.0.20
В целом, я настроил второй фактор для всех подключающихся пользователей,
но не получается настроить таким образом, чтобы только определенные пользователи
должны были проверяться на второй фактор.сейчас схема работы такая:
все пользователи проверяются на LDAP и на второй фактор при подключении.Как надо:
Все пользователи проверяются на LDAP сервере,
а пользователи, которые определены в отдельном файле (только их LDAP логины)
проверялись также на второй фактор.Вот пример моего конфига, который работает для все пользователей:
cat /etc/raddb/sites-enabled/defaultauthorize {
filter_username
filter_google_otp
preprocessif ((ok || updated) && Google-Password && !control:Auth-Type) {
update control {
Auth-Type := `/path_to_script/auth_2fa.py %{User-Name} %{Google-Password}`
}
}
}
Моя идея в том, чтобы после filter_username добавить проверку на соответствие User-Name пользователя на юзеру из файла. И если это соответствие найдено выполнить проверку на 2 фактор.если нет - идем дальше.
толком не смог найти ничего подобного в инете.
Возможно моя идея реализации не подходит.кто-то сталкивался с такой проблемой?
Проблема решена.
Проверкой наличия пользователя в списке занимается отдельный скрипт: check_user_2fa.sh,
который отдает "ok" в консоль:authorize {
filter_username
if (`/path_to_script/check_user_2fa.sh %{User-Name}`) {
filter_google_otp
ldap
if ((ok || updated) && Google-Password && !control:Auth-Type) {
update control {
Auth-Type := `/path_to_script/google_2fa.py %{User-Name} %{Google-Password}`
}
}
} else {
update {
control:Auth-Type := ldap
}}
preprocess
}