Я только что установил сервер freeradius и хотел бы иметь возможность аутентифицироваться, используя как пароль пользователя ldap, так и yubico otp, сгенерированный их yubikey.
Он работает с использованием пароля ldap из коробки без какой-либо конфигурации, но я не могу понять конфигурацию, необходимую для добавления проверки Yubico OTP ...
Я установил модуль freeradius-yubikey и настроил его как таковой:
yubikey {
id_lenght = 12
split = yes
decrypt = no
validate = yes
validation {
servers {
uri = 'http://IP_of_validation_server/wsapi/2.0/verify?id=%d&otp=%s'
}
client_id = 1
api_key = 'my_api_key'
pool {
start = ${thread[pool].start_servers}
min = ${thread[pool].min_spare_servers}
max = ${thread[pool].max_servers}
uses = 0
retry_delay = 30
lifetime = 0
idle_timeout = 60
spread = yes
}
}
}
Я добавил атрибут на свой ldap-сервер для каждого пользователя yubiKeyId, содержащий их идентификатор yubikey. В конце я хотел бы иметь следующий процесс аутентификации:
1) Request from a client specifying the user and the ldappassword concatenated with the Yubico OTP
2) The radius server looks up for the user willing to authenticate
3) The server splits the password received into ldappassword and the yubico OTP
4) The server validates:
- The ldappassword receives with the userPassword from the LDAP server
- The yubico OTP, only if the user possesses the YubiKey
- A user possesses the Yubikey associated with the Yubico OTP if The first part of the yubico OTP and the yubiKeyId attribute from the LDAP server are equal
5) Server sends response
Однако для этого я не могу понять, как разделить отправленный пароль, проверить первую часть с помощью ldap, а вторую часть с помощью yubikey и запросить атрибут с сервера LDAP для дальнейшей проверки.