Skonfiguruj sieci

Za pomocą zasad możesz konfigurować sieci Wi-Fi na urządzeniu. Interfejs API zarządzania Androida korzysta z Open Network Configuration, standardowego formatu opartego na formacie JSON, który został pierwotnie opracowany w ramach projektu Chromium. Szczegółowe informacje o otwartej konfiguracji sieci znajdziesz w specyfikacji.

Aby uwzględnić w zasadach konfigurację sieci otwartej, skonfiguruj pole openNetworkConfiguration w zasobie Policy.

W przypadku urządzeń w pełni zarządzanych możesz opcjonalnie uniemożliwić użytkownikom ręczną konfigurację ustawień Wi-Fi na ich urządzeniach, ustawiając wartość wifiConfigDisabled na true w zasobach Policy.

Obsługiwane funkcje

Interfejs API do zarządzania Androidem obsługuje tylko podzbiór specyfikacji Open Network Configuration.

  • Obiekt najwyższego poziomu:
    • Wartość Type musi być pominięta lub ustawiona na UnencryptedConfiguration. Nie musisz szyfrować konfiguracji sieci w ramach zasad, ponieważ cała zasada jest szyfrowana w usłudze interfejsu API Android Management. Dodatkowo istnieje druga warstwa szyfrowania informacji poufnych, takich jak hasła i klucze prywatne.
  • Obiekty NetworkConfiguration:
    • Pola GUID, Name, TypeWiFi są obsługiwanymi polami, które są wymagane.
    • ProxySettings jest polem opcjonalnym. W takim przypadku obsługiwane są tylko ManualPAC (automatyczna konfiguracja serwera proxy).
    • Wartość Type musi być ustawiona na WiFi. Inne typy sieci nie są obsługiwane.
  • Obiekty WiFi:
    • Atrybuty SSID i HexSSID są obsługiwane i co najmniej jeden z nich musi być obecny.
      • Jeśli ustawione są parametry HexSSIDSSID, ich wartości muszą być spójne.
    • HiddenSSID jest obsługiwane.
    • AllowGatewayARPPolling nie jest obsługiwany.
    • SignalStrength nie jest obsługiwany.
    • Security jest wymagany i obsługuje te wartości: - Brak - WEP-PSK - WPA-PSK - WPA-EAP - WEP-8021X - WPA3-Enterprise_192
    • W przypadku haseł WEP-PSK obsługiwane są tylko 40-bitowe (10-cyfrowe) lub 104-bitowe (26-cyfrowe) hasła.
    • Specyfikacja określa, że hasła wielowyrazowe WEP-PSK muszą zaczynać się od prefiksu 0x. Jednak ze względu na spójność z Android Framework ten prefiks nie jest wymagany.
    • Aby ustawić tryb losowania adresów MAC, użyj właściwości MACAddressRandomizationMode z wartościami Hardware lub Automatic. Ta właściwość jest obecnie niedostępna w specyfikacji Open Network Configuration (ONC), ale jest dostępna w AMAPI i może być określona podczas konfigurowania sieci Wi-Fi. Dotyczy to tylko Androida 13 i nowszych we wszystkich trybach zarządzania.
      • Hardware używa fabrycznego adresu MAC podczas łączenia się z siecią.
      • Automatic pozwala frameworkowi Wi-Fi automatycznie określić strategię losowania adresów MAC. Mogą to być trwałe lub nietrwałe adresy MAC wygenerowane losowo, które są używane podczas łączenia się z siecią.
  • Obiekty EAP:
    • ClientCertPattern nie jest obsługiwany.
    • SaveCredentials nie jest obsługiwany, ponieważ dane uwierzytelniające są zawsze zapisywane.
    • UseSystemCAs nie jest obsługiwany.
    • ServerCARef jest obsługiwane.
    • ServerCARefs jest obsługiwane.
    • DomainSuffixMatch jest obsługiwane. Konfiguracje sieci bezprzewodowych w firmie bez tego pola (lub z pustą listą jako wartością) są uznawane za niezabezpieczone i odrzucane przez platformę. Wartości powinny być prawidłowymi nazwami domen (np. „example.com”, „subdomain.example.com”).
    • W przypadku atrybutu ClientCertType obsługiwane są te wartości: Ref i KeyPairAlias.
    • W przypadku atrybutu Inner obsługiwane są te wartości: MSCHAPv2 i PAP.
    • W przypadku działania Outer obsługiwane są te wartości: EAP-AKA, EAP-TLS, EAP-TTLS, EAP-SIM, PEAP.
  • Obiekty Certificate:
    • Remove nie jest obsługiwany. Zamiast tego pomiń certyfikat w konfiguracji.
    • TrustBits nie jest obsługiwany.

Przykłady

Wiele sieci Wi-Fi

Ten przykładowy fragment zasad zawiera 3 sieci Wi-Fi skonfigurowane z użyciem różnych schematów zabezpieczeń. Format JSON Open Network Configuration jest zagnieżdżony w polu openNetworkConfiguration w pliku 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"
      }
    }
  ]
}

uwierzytelnianie EAP,

Ten przykładowy fragment zasad pokazuje sieć bezprzewodową skonfigurowaną z uwierzytelnianiem EAP-TLS. Oprócz obiektu NetworkConfigurations przykład zawiera 2 obiekty Certificates dla certyfikatów klienta i serwera.

"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"
               ],
               "ServerCARefs": ["abc123"],
               "ClientCertType": "Ref",
               "ClientCertRef": "xyz456"
            },
            "Security": "WPA-EAP"
         }
      }
   ],
   "Certificates": [
      {
         "GUID": "abc123",
         "Type": "Server",
         "X509": "TWFuIGlzIGRpc3Rpbmd1a"
      },
      {
         "GUID": "xyz456",
         "Type": "Client",
         "PKCS12": "6PQIEQYJKoZbdDu8gwggRlqCCAPEbAAcGClgvcNAQc"
      }
   ]
}

Pole ClientCertType może też mieć wartość KeyPairAlias, a pole ClientCertKeyPairAlias może służyć do określania aliasu zainstalowanego (patrz DevicePolicyManager.installKeyPair) lub wygenerowanego (patrz DevicePolicyManager.generateKeyPair) klucza KeyChain, który jest używany do uwierzytelniania Wi-Fi. W Androidzie 12 i nowszych para kluczy KeyChain o aliasie określonym za pomocą ClientCertKeyPairAlias jest przyznawana do uwierzytelniania w sieciach Wi-Fi i jest używana do uwierzytelniania w odpowiedniej sieci Wi-Fi. W przypadku wersji Androida 12 i starszych raportowany jest tylko powód nonComplianceDetailAPI_LEVEL. Jeśli alias klucza pary nie odpowiada istniejącej parze kluczy, jest zgłaszanynonComplianceDetail zINVALID_VALUE przyczyna iONC_WIFI_KEY_PAIR_ALIAS_NOT_CORRESPONDING_TO_EXISTING_KEY przyczyna. Oto przykładowa zasada:

"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"
               ],
               "ServerCARefs": ["abc123"],
               "ClientCertType": "KeyPairAlias",
               "ClientCertKeyPairAlias": "key-alias"
            },
            "Security": "WPA-EAP"
         }
      }
   ],
   "Certificates": [
      {
         "GUID": "abc123",
         "Type": "Server",
         "X509": "TWFuIGlzIGRpc3Rpbmd1a"
      }
   ]
}

Pole Security może też mieć wartość WPA3-Enterprise_192, która oznacza sieć WPA-EAP skonfigurowaną w trybie WPA3 192-bitowym.

"openNetworkConfiguration": {
   "Type": "UnencryptedConfiguration",
   "NetworkConfigurations": [
      {
         "Type": "WiFi",
         "Name": "Example A",
         "GUID": "A",
         "WiFi": {
            "SSID": "Example A",
            "EAP": {
               "Outer": "EAP-TLS",
               "Identity": "example",
               "ServerCARefs": ["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"
      }
   ]
}