Настройка сетей

Вы можете использовать политику для настройки сетей Wi-Fi на устройстве. API управления Android использует конфигурацию открытой сети, стандартный формат на основе JSON, который изначально был разработан как часть проекта Chromium. Подробную информацию о конфигурации открытой сети см. в спецификации .

Чтобы включить конфигурацию открытой сети в политику, установите поле openNetworkConfiguration в ресурсе Policy .

Для полностью управляемых устройств вы можете дополнительно запретить пользователю вручную настраивать параметры Wi-Fi на своем устройстве, установив wifiConfigDisabled значение true в ресурсе Policy .

Поддерживаемые функции

API управления Android поддерживает только часть спецификации конфигурации открытой сети.

  • Объект верхнего уровня:
    • Type должен быть опущен или установлен как UnencryptedConfiguration . Нет необходимости шифровать конфигурацию сети в политике, поскольку вся политика зашифрована в службе API управления Android. Кроме того, существует второй уровень шифрования конфиденциальной информации, такой как парольные фразы и закрытые ключи.
  • Объекты NetworkConfiguration :
    • GUID , Name , Type и WiFi — поддерживаемые поля, которые являются обязательными.
    • ProxySettings — необязательное поле. Если это используется, поддерживаются только Manual и PAC (автоматическая настройка прокси).
    • Type должен быть установлен на WiFi . Другие типы сетей не поддерживаются.
  • Объекты WiFi :
    • AllowGatewayARPPolling не поддерживается.
    • SignalStrength не поддерживается.
    • Требуется Security , поддерживаются следующие значения: - Нет - WEP-PSK - WPA-PSK - WPA-EAP - WEP-8021X - WPA3-Enterprise_192
    • Для кодовых фраз WEP-PSK поддерживаются только 40-битные (10-значные) или 104-битные (26-значные) фразы-пароли.
    • В спецификации указано, что парольные фразы WEP-PSK должны начинаться с префикса 0x . Однако для обеспечения совместимости с Android Framework этот префикс не требуется.
    • Чтобы установить режим рандомизации MAC , используйте свойство MACAddressRandomizationMode , заданное со значениями Hardware или Automatic . Это свойство в настоящее время недоступно в спецификации конфигурации открытой сети (ONC), но оно предоставляется в AMAPI и может быть указано при настройке сетей Wi-Fi. Это касается только Android 13+ во всех режимах управления.
      • Hardware использует заводской MAC-адрес при подключении к сети.
      • Automatic позволяет платформе Wi-Fi автоматически выбирать стратегию рандомизации MAC. Это могут быть постоянные или непостоянные, случайно сгенерированные MAC-адреса, которые используются при подключении к сети.
  • Объекты EAP :
    • ClientCertPattern не поддерживается.
    • SaveCredentials не поддерживается, поскольку учетные данные всегда сохраняются.
    • UseSystemCAs не поддерживается.
    • Поддерживается DomainSuffixMatch . Корпоративные беспроводные конфигурации без этого поля (или с пустым списком в качестве значения) считаются небезопасными и отклоняются платформой . Значения должны быть действительными доменными именами (например, «example.com», «subdomain.example.com»).
    • Для ClientCertType поддерживаются следующие значения: Ref , KeyPairAlias
    • Для Inner поддерживаются следующие значения: MSCHAPv2 , PAP
    • Для Outer поддерживаются следующие значения: EAP-AKA , EAP-TLS , EAP-TTLS , EAP-SIM , PEAP
  • Объекты Certificate :
    • Remove не поддерживается. Вместо этого опустите сертификат в конфигурации.
    • TrustBits не поддерживается.

Примеры

Несколько сетей Wi-Fi

В этом примере фрагмента политики показаны три сети Wi-Fi, настроенные с разными схемами безопасности. JSON открытой конфигурации сети вложен в поле openNetworkConfiguration файла JSON Policy .

"openNetworkConfiguration": {
 
"NetworkConfigurations": [
   
{
     
"GUID": "a",
     
"Name": "Example A",
     
"Type": "WiFi",
     
"WiFi": {
       
"SSID": "Example A",
       
"Security": "None",
       
"AutoConnect": true
     
}
   
},
   
{
     
"GUID": "b",
     
"Name": "Example B",
     
"Type": "WiFi",
     
"WiFi": {
       
"SSID": "Example B",
       
"Security": "WEP-PSK",
       
"Passphrase": "1234567890"
     
}
   
},
   
{
     
"GUID": "c",
     
"Name": "Example C",
     
"Type": "WiFi",
     
"WiFi": {
       
"SSID": "Example C",
       
"Security": "WPA-PSK",
       
"Passphrase": "baseball"
     
}
   
},
   
{
     
"GUID": "networkA",
     
"Name": "networkA",
     
"Type": "WiFi",
     
"WiFi": {
       
"SSID": "networkA",
       
"Security": "WPA-PSK",
       
"Passphrase": "pwd1234567",
       
"MACAddressRandomizationMode": "Hardware"
     
}
   
}
 
]
}

EAP-аутентификация

В этом примере фрагмента политики показана беспроводная сеть, настроенная с аутентификацией EAP-TLS. Помимо объекта NetworkConfigurations , пример включает два объекта Certificates для сертификатов клиента и сервера.

"openNetworkConfiguration": {
   
"Type": "UnencryptedConfiguration",
   
"NetworkConfigurations": [
     
{
         
"GUID": "a",
         
"Name": "Example A",
         
"Type": "WiFi",
         
"WiFi": {
           
"SSID": "Example A",
           
"EAP": {
               
"Outer": "EAP-TLS",
               
"Identity": "example",
               
"DomainSuffixMatch": [
                 
"example.com",
                 
"example.org"
               
],
               
"ServerCARef": "abc123",
               
"ClientCertType": "Ref",
               
"ClientCertRef": "xyz456"
           
},
           
"Security": "WPA-EAP"
         
}
     
}
   
],
   
"Certificates": [
     
{
         
"GUID": "abc123",
         
"Type": "Server",
         
"X509": "TWFuIGlzIGRpc3Rpbmd1a"
     
},
     
{
         
"GUID": "xyz456",
         
"Type": "Client",
         
"PKCS12": "6PQIEQYJKoZbdDu8gwggRlqCCAPEbAAcGClgvcNAQc"
     
}
   
]
}

Для поля ClientCertType также можно задать значение KeyPairAlias ​​, а поле ClientCertKeyPairAlias ​​можно использовать для указания псевдонима установленной (см. DevicePolicyManager.installKeyPair ) или созданной (см. DevicePolicyManager.generateKeyPair ) пары ключей KeyChain, которая используется для аутентификации Wi-Fi. В Android 12 и более поздних версиях пара ключей KeyChain с псевдонимом, указанным в ClientCertKeyPairAlias предоставляется для аутентификации в сетях Wi-Fi и используется для аутентификации в соответствующей сети Wi-Fi. Ниже Android 12 сообщается о причине nonComplianceDetail API_LEVEL . nonComplianceDetail с причиной INVALID_VALUE и конкретной причиной ONC_WIFI_KEY_PAIR_ALIAS_NOT_CORRESPONDING_TO_EXISTING_KEY сообщается, если указанный псевдоним пары ключей не соответствует существующему ключу. Ниже приведен пример политики:

"openNetworkConfiguration": {
   
"Type": "UnencryptedConfiguration",
   
"NetworkConfigurations": [
     
{
         
"GUID": "a",
         
"Name": "Example A",
         
"Type": "WiFi",
         
"WiFi": {
           
"SSID": "Example A",
           
"EAP": {
               
"Outer": "EAP-TLS",
               
"Identity": "example",
               
"DomainSuffixMatch": [
                 
"example.com",
                 
"example.org"
               
],
               
"ServerCARef": "abc123",
               
"ClientCertType": "KeyPairAlias",
               
"ClientCertKeyPairAlias": "key-alias"
           
},
           
"Security": "WPA-EAP"
         
}
     
}
   
],
   
"Certificates": [
     
{
         
"GUID": "abc123",
         
"Type": "Server",
         
"X509": "TWFuIGlzIGRpc3Rpbmd1a"
     
}
   
]
}

Поле Security также может иметь значение WPA3-Enterprise_192 , которое представляет собой сеть WPA-EAP, настроенную в 192-битном режиме WPA3.

"openNetworkConfiguration": {
   
"Type": "UnencryptedConfiguration",
   
"NetworkConfigurations": [
     
{
         
"Type": "WiFi",
         
"Name": "Example A",
         
"GUID": "A",
         
"WiFi": {
           
"SSID": "Example A",
           
"EAP": {
               
"Outer": "EAP-TLS",
               
"Identity": "example",
               
"ServerCARef": "abc123",
               
"ClientCertType": "Ref",
               
"ClientCertRef": "xyz456",
               
"DomainSuffixMatch": ["example.com"]
           
},
           
"Security": "WPA3-Enterprise_192",
           
"AutoConnect": true
         
}
     
}
   
],
   
"Certificates": [
     
{
         
"GUID": "abc123",
         
"Type": "Server",
         
"X509": "TWFuIGlzIGRpc3Rpbmd1a"
     
},
     
{
         
"GUID": "xyz456",
         
"Type": "Client",
         
"PKCS12": "6PQIEQYJKoZbdDu8gwggRlqCCAPEbAAcGClgvcNAQc"
     
}
   
]
}