Назад | Перейти на главную страницу

Атрибут Active Directory / Freeradius / ntlm_auth / mail

В настоящее время я настраиваю Linux-сервер с Freeradius, чтобы наши клиенты аутентифицировались в нашей Active Directory для нашей сети Wi-Fi.

Цель состоит в том, чтобы наши пользователи использовали адрес электронной почты, который присутствует в Active Directory в качестве атрибута «mail», и пароль своего домена для аутентификации в сети WiFi.

Формат нашего наименования AD следующий

имя: Joe Jonssen имя пользователя: foo \ jjon1 UPN: jjon1@foo.bar.lan почтовый адрес: j.jonssen@company.com

В настоящее время у меня работает ntlm_auth, и я могу войти в систему с помощью jjon1 и пароля. Но мы хотим войти с помощью j.jonssen@company.com и пароля.

Есть ли способ добиться этого, я не привязан к Freeradius в качестве сервера Radius. Нам нужно использовать наш почтовый адрес в качестве имени пользователя для сети Wi-Fi, потому что мы думаем о присоединении к такой инициативе, как 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}"