Netzwerke konfigurieren

Mithilfe der Richtlinie können Sie WLANs auf einem Gerät konfigurieren. Die Android Management API verwendet Open Network Configuration, ein Standardformat auf JSON-Basis, das ursprünglich im Rahmen des Chromium-Projekts entwickelt wurde. Ausführliche Informationen zur Open Network Configuration finden Sie in der Spezifikation.

Wenn Sie eine Konfiguration für ein offenes Netzwerk in eine Richtlinie einschließen möchten, legen Sie das Feld openNetworkConfiguration in einer 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 setzen Sie wifiConfigDisabled in der Ressource Policy auf true.

Unterstützte Funktionen

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

  • Objekt der obersten Ebene:
    • Type muss weggelassen oder auf UnencryptedConfiguration festgelegt werden. Die Netzwerkkonfiguration innerhalb einer Richtlinie muss nicht verschlüsselt werden, da die gesamte Richtlinie im Android Management API-Dienst verschlüsselt wird. Darüber hinaus 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 Pflichtfelder.
    • ProxySettings ist ein optionales Feld. Wenn sie verwendet wird, werden nur Manual und PAC (automatische Proxykonfiguration) unterstützt.
    • Type muss auf WiFi festgelegt sein. Andere Netzwerktypen werden nicht unterstützt.
  • WiFi-Objekte:
    • AllowGatewayARPPolling wird nicht unterstützt.
    • SignalStrength wird nicht unterstützt.
    • Security ist erforderlich. Die folgenden Werte werden unterstützt: – Keine – WEP-PSK – WPA-PSK – WPA-EAP – WEP-8021X – WPA3-Enterprise_192
    • Für WEP-PSK-Passphrasen werden nur Passphrasen mit 40 Bit (10 Ziffern) oder 104 Bit (26 Ziffern) unterstützt.
    • Die Spezifikation besagt, dass WEP-PSK-Passphrasen mit dem Präfix 0x beginnen müssen. Aus Gründen der Übereinstimmung mit dem Android-Framework ist dieses Präfix jedoch nicht erforderlich.
    • Verwenden Sie zum Festlegen des MAC-Randomisierungsmodus das Attribut MACAddressRandomizationMode mit den Werten Hardware oder Automatic. Dieses Attribut ist derzeit in der ONC-Spezifikation (Open Network Configuration) nicht verfügbar, wird aber in der AMAPI bereitgestellt und kann bei der Konfiguration von WLANs angegeben werden. Dies gilt nur für Android 13 und höher in allen Verwaltungsmodi.
      • Hardware verwendet beim Herstellen einer Netzwerkverbindung die Werks-MAC-Adresse.
      • Mit Automatic wird die MAC-Randomisierungsstrategie automatisch vom WLAN-Framework ausgewählt. Dabei kann es sich um permanente oder nicht persistente zufällig generierte MAC-Adressen handeln, die beim Herstellen einer Netzwerkverbindung verwendet werden.
  • EAP-Objekte:
    • ClientCertPattern wird nicht unterstützt.
    • SaveCredentials wird nicht unterstützt.
    • UseSystemCAs wird nicht unterstützt.
    • DomainSuffixMatch wird unterstützt.
      WLAN-Konfigurationen von Unternehmen ohne dieses Feld (oder mit einer leeren Liste als Wert) gelten als unsicher und von der Plattform abgelehnt. Die Werte müssen gültige Domainnamen sein (z.B. „beispiel.de“, „subdomain.beispiel.de“).
    • ClientCertType unterstützt nur den Wert Ref
    • 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 WLAN-Netzwerke, die mit unterschiedlichen Sicherheitsschemas konfiguriert sind. Die JSON-Datei für die Open Network Configuration-Konfiguration ist im Feld openNetworkConfiguration der JSON-Datei Policy 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"
               ],
               "ServerCARef": "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 KeyChain-Schlüsselpaars (siehe DevicePolicyManager.installKeyPair) oder eines generierten KeyChain-Schlüsselpaares (siehe DevicePolicyManager.generateKeyPair) angegeben werden, das für die WLAN-Authentifizierung verwendet wird. Unter Android 12 und höher wird das KeyChain-Schlüsselpaar, bei dem der Alias mit ClientCertKeyPairAlias angegeben ist, zur Authentifizierung bei WLANs gewährt und zur Authentifizierung bei dem entsprechenden WLAN verwendet. Unter Android 12 wird ein nonComplianceDetail mit dem Grund API_LEVEL gemeldet. Ein nonComplianceDetail mit dem Grund INVALID_VALUE und dem für ONC_WIFI_KEY_PAIR_ALIAS_NOT_CORRESPONDING_TO_EXISTING_KEY spezifischen Grund wird gemeldet, wenn der angegebene Alias des Schlüsselpaars 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"
               ],
               "ServerCARef": "abc123",
               "ClientCertType": "KeyPairAlias",
               "ClientCertKeyPairAlias": "key-alias"
            },
            "Security": "WPA-EAP"
         }
      }
   ],
   "Certificates": [
      {
         "GUID": "abc123",
         "Type": "Server",
         "X509": "TWFuIGlzIGRpc3Rpbmd1a"
      }
   ]
}

Das Feld Security kann auch WPA3-Enterprise_192 enthalten. Dabei handelt es sich um ein WPA-EAP-Netzwerk, das mit dem 192-Bit-WPA3 konfiguriert ist.

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