Netzwerke konfigurieren

Mit Richtlinien können Sie WLANs auf einem Gerät konfigurieren. Die Android Management API verwendet Open Network Configuration, ein standardmäßiges JSON-basiertes Format, das ursprünglich im Rahmen des Chromium-Projekts entwickelt wurde.

Wenn Sie eine Open Network Configuration in eine Richtlinie einfügen möchten, legen Sie das Feld openNetworkConfiguration für eine Policy-Ressource fest.

Bei vollständig verwalteten Geräten können Sie optional verhindern, dass Nutzer die WLAN-Einstellungen auf ihrem Gerät manuell konfigurieren. Dazu müssen Sie in der Ressource Policy wifiConfigDisabled auf true festlegen.

Unterstützte Funktionen

Die Android Management API unterstützt nur einen Teil der Open Network Configuration-Spezifikation.

  • Objekt der obersten Ebene:
    • Type muss ausgelassen oder auf UnencryptedConfiguration gesetzt werden. Die Netzwerkkonfiguration in einer Richtlinie muss nicht verschlüsselt werden, da die gesamte Richtlinie im Android Management API-Dienst verschlüsselt wird. Außerdem gibt es eine zweite Verschlüsselungsebene für vertrauliche Informationen wie Passphrasen und private Schlüssel.
  • NetworkConfiguration-Objekte:
    • GUID, Name, Type und WiFi sind unterstützte Felder und alle erforderlich.
    • ProxySettings ist ein optionales Feld. Wenn diese Option verwendet wird, werden nur Manual und PAC (Proxy Auto-Configuration) unterstützt.
    • Type muss auf WiFi festgelegt sein. Andere Arten von Netzwerken werden nicht unterstützt.
  • WiFi-Objekte:
    • SSID und HexSSID werden unterstützt und mindestens eines davon muss vorhanden sein.
      • Wenn sowohl HexSSID als auch SSID festgelegt sind, müssen die Werte übereinstimmen.
    • HiddenSSID unterstützt.
    • AllowGatewayARPPolling wird nicht unterstützt.
    • SignalStrength wird nicht unterstützt.
    • AutoConnect Wenn diese Option aktiviert ist, wird dieses Netzwerk bei der Netzwerkauswahl als potenzieller Kandidat für die Verbindung in Betracht gezogen.
    • Security ist erforderlich und die folgenden Werte werden unterstützt: – None – WEP-PSK – WPA-PSK – WPA-EAP – WEP-8021X – WPA3-Enterprise_192
  • Für WEP-PSK-Passphrasen werden nur 40-Bit- (10-stellige) oder 104-Bit- (26-stellige) Passphrasen unterstützt.
  • In der Spezifikation wird festgelegt, dass WEP-PSK-Passphrasen mit dem Präfix 0x beginnen müssen. Aus Gründen der Konsistenz mit dem Android-Framework ist dieses Präfix jedoch nicht erforderlich.
  • Verwenden Sie das Attribut MACAddressRandomizationMode mit den Werten Hardware oder Automatic, um den Modus für die MAC-Adress-Randomisierung festzulegen. Dieses Attribut ist in der Open Network Configuration (ONC) nicht verfügbar, wird aber in der AMAPI bereitgestellt und kann beim Konfigurieren von WLANs angegeben werden. Dies gilt nur für Android 13 und höher in allen Verwaltungsmodi.
    • Hardware verwendet beim Herstellen einer Verbindung zum Netzwerk die werkseitige MAC-Adresse.
    • Mit Automatic kann das WLAN-Framework die MAC-Randomisierungsstrategie automatisch festlegen. Dabei kann es sich entweder um dauerhafte oder nicht dauerhafte zufällig generierte MAC-Adressen handeln, die bei der Verbindung mit dem Netzwerk verwendet werden.
  • EAP-Objekte:
  • ClientCertPattern wird nicht unterstützt.
  • SaveCredentials wird nicht unterstützt, da Anmeldedaten immer gespeichert werden.
  • UseSystemCAs wird nicht unterstützt.
  • ServerCARef unterstützt.
  • ServerCARefs unterstützt.
  • DomainSuffixMatch unterstützt. Drahtloskonfigurationen für Unternehmen ohne dieses Feld (oder mit einer leeren Liste als Wert) gelten als unsicher und werden von der Plattform abgelehnt. Die Werte sollten gültige Domainnamen sein, z.B. „beispiel.de“ oder „subdomain.beispiel.de“.
  • Die folgenden Werte werden für ClientCertType unterstützt: Ref, KeyPairAlias
  • Die folgenden Werte werden für Inner unterstützt: MSCHAPv2, PAP
  • Die folgenden Werte werden für Outer unterstützt: EAP-AKA, EAP-TLS, EAP-TTLS, EAP-SIM, PEAP
  • Certificate-Objekte:
    • Remove wird nicht unterstützt. Lassen Sie das Zertifikat stattdessen in der Konfiguration weg.
    • TrustBits wird nicht unterstützt.

Beispiele

Mehrere WLANs

Dieses Beispiel für ein Richtlinienfragment zeigt drei WLANs, die mit unterschiedlichen Sicherheitsverfahren konfiguriert sind. Die ONC-JSON ist im Feld openNetworkConfiguration der Policy-JSON verschachtelt.

"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-Authentifizierung

Dieses Beispiel für ein Richtlinienfragment zeigt ein WLAN, das mit EAP-TLS-Authentifizierung konfiguriert ist. Zusätzlich zum NetworkConfigurations-Objekt enthält das Beispiel zwei Certificates-Objekte für die Client- und Serverzertifikate.

"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"
      }
   ]
}

Das Feld ClientCertType kann auch auf KeyPairAlias gesetzt werden. Mit dem Feld ClientCertKeyPairAlias kann der Alias eines installierten (siehe DevicePolicyManager.installKeyPair) oder generierten (siehe DevicePolicyManager.generateKeyPair) KeyChain-Schlüsselpaars angegeben werden, das für die WLAN-Authentifizierung verwendet wird. Bei Android 12 und höher wird das KeyChain-Schlüsselpaar mit dem Alias, der mit ClientCertKeyPairAlias angegeben wurde, für die Authentifizierung bei WLANs gewährt und für die Authentifizierung beim entsprechenden WLAN verwendet. Vor Android 12 wird ein nonComplianceDetail mit dem Grund API_LEVEL> gemeldet. Ein nonComplianceDetail mit dem Grund INVALID_VALUE und dem spezifischen Grund ONC_WIFI_KEY_PAIR_ALIAS_NOT_CORRESPONDING_TO_EXISTING_KEY wird gemeldet, wenn der angegebene Alias für das Schlüsselpaar keinem vorhandenen Schlüssel entspricht. Hier ist ein Beispiel für eine Richtlinie:

"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"
      }
   ]
}

Das Feld Security kann auch WPA3-Enterprise_192 sein. Das ist ein WPA-EAP-Netzwerk, das mit dem WPA3-192-Bit-Modus konfiguriert ist.

"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"
      }
   ]
}