Я в настоящее время настраиваю сервер Linux с Freeradius, чтобы сделать, чтобы наши клиенты прошли проверку подлинности против нашего Active Directory для нашей сети Wi-Fi.
Цель состоит в том, чтобы сделать, чтобы наши пользователи использовали адрес электронной почты, который присутствует Active Directory как 'почтовый' атрибут и их пароль пользователя в домене для аутентификации к сети WiFi.
Формат нашего AD именования следующие
имя: Имя пользователя Joe Jonssen: foo\jjon1 UPN: почтовый адрес jjon1@foo.bar.lan: j.jonssen@company.com
Я в настоящее время имею работу ntlm_auth и могу войти в систему с jjon1 и паролем. Но мы хотим войти в систему с j.jonssen@company.com и паролем.
Есть ли любой способ достигнуть этого, я не связываюсь с Freeradius как сервер Радиуса. Мы должны использовать наш почтовый адрес в качестве имени пользователя для сети WiFi, потому что мы думаем о присоединении к инициативе как Eduroam, и вход в систему с почтовым адресом требуется.
Вы можете узнать имя пользователя / sAMAccountName, запустив LDAP-запрос к AD и затем выполнив NTLM-аутентификацию.
Очень простой сценарий bash mail_to_username
( без входного фильтра) будет выглядеть так:
#!/bin/bash
MAIL=$1
NTDOMAIN=$2
CHALLENGE=$3
NTRESPONSE=$4
HOST="ldap://ip-adress"
BASE_DN="OU=Users,DC=example,DC=de"
BIND_DN="LDAP-freeradius@example.de"
PASSWORD="x"
FILTER="mail=$MAIL"
sAMAccountName=`ldapsearch -LLL -x -D "$BIND_DN" -w "$PASSWORD" -b "$BASE_DN" -H "$HOST" "$FILTER" sAMAccountName | grep sAMAccountName | awk '{print $2}'`
/usr/bin/ntlm_auth --request-nt-key --username=$sAMAccountName --domain=$NTDOMAIN --challenge=$CHALLENGE --nt-response=$NTRESPONSE
внутри модуля mschap вы вызываете bash-скрипт вместо прямого вызова ntlm_auth
:
ntlm_auth = "/usr/bin/mail_to_username %{mschap:User-Name:-None} %{%{mschap:NT-Domain}:-EXAMPLE} %{mschap:Challenge:-00} %{mschap:NT-Response:-00}"