JAS поддерживает аутентификацию на основе запросов HTTP POST типа REST. Для решения задачи будем использовать стандартный модуль REST для freeradius и формат передачи JSON.
Исходный стенд: Debian 9.5 с установленным сервером freeradius.
1. Устанавливаем из репозитория пакет freeradius-rest:
apt install freeradius-rest
2. Делаем резервную копию файла /etc/freeradius/3.0/sites-available/default и приводим его к виду:
server default {
listen {
type = auth
ipaddr = *
port = 0
limit {
max_connections = 16
lifetime = 0
idle_timeout = 30 }
}
listen {
ipaddr = *
port = 0
type = acct }
# Указываем использование rest
authorize {
if (User-Password) {
update control {
Auth-Type := rest }
}
}
# Указываем использование rest
authenticate {
Auth-Type REST {
rest }
}
}
Примечание: Если сервер radius уже используется под другие задачи, то разумеется данные настройки необходимо встраивать в уже имеющийся файл.
3. Создаем файл /etc/freeradius/3.0/mods-enabled/rest с содержимым:
rest {
# Адрес сервера JAS. Берется из параметра JAS в реестре: HKEY_LOCAL_MACHINE\SOFTWARE\Aladdin\JaCarta Authentication Server\default\AuthenticationService\RestAddress
connect_uri = "http://<jas-server>:<port>"
authenticate {
uri = "${..connect_uri}/JASEngine/Default/AuthenticationService/rest/authenticate"
method = 'post'
body = 'json'
data = '{"Password":"%{User-Password}","Username":"%{User-Name}"}' # Регистр букв здесь важен!
} }
Примечание: На самом деле стандартный конфиг предлагает множество различных параметров, как то: авторизация, параметры сессии и т.д. Но нас интересует только аутентификация.
4. Перезагружаем службу freeradius:
service freeradius restart
Проверить аутентификацию можно командой radtest.