Я настроил Radius Server на Windows Server 2016 и хочу подключиться к сети Enterprise WiFi с помощью своего приложения. Я попытался выполнить следующие шаги:
Установите профиль без учетных данных, используяWlanSetProfile(Я использовал импортированный профиль из netsh с некоторыми изменениями)
Затем установите XML-профиль ниже с моим именем пользователя и паролемWlanSetProfileEapXmlUserData:
<?xml version="1.0" ?>
<EapHostUserCredentials xmlns="http://www.microsoft.com/provisioning/EapHostUserCredentials"
xmlns:eapCommon="http://www.microsoft.com/provisioning/EapCommon"
xmlns:baseEap="http://www.microsoft.com/provisioning/BaseEapMethodUserCredentials">
<EapMethod>
<eapCommon:Type>26</eapCommon:Type>
<eapCommon:AuthorId>0</eapCommon:AuthorId>
</EapMethod>
<Credentials xmlns:eapUser="http://www.microsoft.com/provisioning/EapUserPropertiesV1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:baseEap="http://www.microsoft.com/provisioning/BaseEapUserPropertiesV1"
xmlns:MsPeap="http://www.microsoft.com/provisioning/MsPeapUserPropertiesV1"
xmlns:MsChapV2="http://www.microsoft.com/provisioning/MsChapV2UserPropertiesV1">
<baseEap:Eap>
<baseEap:Type>26</baseEap:Type>
<MsChapV2:EapType>
<MsChapV2:Username>test</MsChapV2:Username>
<MsChapV2:Password>test</MsChapV2:Password>
</MsChapV2:EapType>
</baseEap:Eap>
</Credentials>
</EapHostUserCredentials>
Затем я используюWlanConnectФункция и функция обратного вызова для проверки соединения. При подключении возникает следующая проблема:
NotificationCode возвращает код 8 (wlan_notification_acm_scan_fail), а затем 11 (wlan_notification_acm_connection_attempt_fail).
Также из документов MS:
wlan_notification_acm_scan_fail:
Сканирование доступных для подключения сетей не удалось.
Член pData структуры WLAN_NOTIFICATION_DATA указывает на значение типа данных WLAN_REASON_CODE, которое определяет причину сбоя операции WLAN.
Итак, я проверил pData при возникновении этой проблемы, и он возвращает следующую причину:
wlan_notification_acm_scan_fail "Операция прошла успешно."
Но сеть не подключена. Заранее спасибо за помощь.
решение1
Я исправил эту проблему. Проблема была в том, что PerformServerValidation был установлен в значение true и отображал диалоговое окно уведомления для проверки сертификата в Windows, поэтому он вернул:
wlan_notification_acm_scan_fail "Операция прошла успешно."
Установка PerformServerValidation в значение false решила проблему (функция WlanSetProfile).
<PerformServerValidation xmlns=\"http://www.microsoft.com/provisioning/MsPeapConnectionPropertiesV2\">false</PerformServerValidation>
Также для функции WlanSetProfileEapXmlUserData я предоставил этот профиль:
<?xml version="1.0" ?>
<EapHostUserCredentials
xmlns="http://www.microsoft.com/provisioning/EapHostUserCredentials"
xmlns:eapCommon="http://www.microsoft.com/provisioning/EapCommon"
xmlns:baseEap="http://www.microsoft.com/provisioning/BaseEapMethodUserCredentials">
<EapMethod>
<eapCommon:Type>25</eapCommon:Type>
<eapCommon:AuthorId>0</eapCommon:AuthorId>
</EapMethod>
<Credentials
xmlns:eapUser="http://www.microsoft.com/provisioning/EapUserPropertiesV1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:baseEap="http://www.microsoft.com/provisioning/BaseEapUserPropertiesV1"
xmlns:MsPeap="http://www.microsoft.com/provisioning/MsPeapUserPropertiesV1"
xmlns:MsChapV2="http://www.microsoft.com/provisioning/MsChapV2UserPropertiesV1">
<baseEap:Eap>
<baseEap:Type>25</baseEap:Type>
<MsPeap:EapType>
<baseEap:Eap>
<baseEap:Type>26</baseEap:Type>
<MsChapV2:EapType>
<MsChapV2:Username>username</MsChapV2:Username>
<MsChapV2:Password>password</MsChapV2:Password>
</MsChapV2:EapType>
</baseEap:Eap>
</MsPeap:EapType>
</baseEap:Eap>
</Credentials>
</EapHostUserCredentials>
Теперь он успешно подключается к сети Enterprise. Проблема решена. Спасибо.