Netzwerke konfigurieren

Mithilfe einer Richtlinie 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. Ausführliche Informationen zur offenen Netzwerkkonfiguration finden Sie in der Spezifikation.

Wenn Sie eine offene Netzwerkkonfiguration in eine Richtlinie aufnehmen 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. Legen Sie dazu in der Ressource Policy die Option wifiConfigDisabled auf true fest.

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 muss nicht innerhalb einer Richtlinie 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 sind erforderlich.
    • ProxySettings ist ein optionales Feld. In diesem Fall werden nur Manual und PAC (Proxy Auto-Configuration) unterstützt.
    • Für „Type“ muss „WiFi“ festgelegt werden. Andere Netzwerktypen werden nicht unterstützt.
  • WiFi Objekte:
    • SSID und HexSSID werden unterstützt und mindestens eine 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.
    • Security ist erforderlich. Folgende Werte werden unterstützt: - Keine - 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.
    • Die Spezifikation besagt, dass WEP-PSK-Passphrasen mit dem Präfix 0x beginnen müssen. Aus Gründen der Einheitlichkeit mit dem Android-Framework ist dieses Präfix jedoch nicht erforderlich.
    • Verwenden Sie das Attribut MACAddressRandomizationMode mit den Werten Hardware oder Automatic, um den MAC-Zufallsmodus festzulegen. Diese Eigenschaft ist derzeit nicht in der Open Network Configuration (ONC)-Spezifikation verfügbar, wird aber in AMAPI bereitgestellt und kann beim Konfigurieren von WLANs angegeben werden. Das gilt nur für Android 13 und höher in allen Verwaltungsmodi.
      • Hardware verwendet die MAC-Adresse aus der Fabrik beim Herstellen einer Verbindung zum Netzwerk.
      • Mit Automatic kann das WLAN-Framework automatisch die MAC-Zufallsmix-Strategie festlegen. Dies können entweder dauerhafte oder nicht dauerhafte zufällig generierte MAC-Adressen sein, die bei der Verbindung zum 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. WLAN-Konfigurationen für Unternehmen ohne dieses Feld (oder mit einer leeren Liste als Wert) gelten als unsicher und werden von der Plattform abgelehnt. Die Werte müssen gültige Domainnamen sein (z.B. „beispiel.de“ oder „subdomain.beispiel.de“).
    • Für ClientCertType werden die folgenden Werte unterstützt: Ref, KeyPairAlias
    • Für Inner werden die folgenden Werte unterstützt: MSCHAPv2, PAP
    • Für Outer werden die folgenden Werte 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 aus.
    • TrustBits wird nicht unterstützt.

Beispiele

Mehrere WLANs

Dieses Beispiel für ein Richtlinienfragment zeigt drei WLANs, die mit unterschiedlichen Sicherheitsschemata konfiguriert sind. Die JSON-Datei für die offene Netzwerkkonfiguration 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 der EAP-TLS-Authentifizierung konfiguriert ist. Neben dem 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. Im 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. Unter Android 12 und höher wird das KeyChain-Schlüsselpaar mit dem mit ClientCertKeyPairAlias angegebenen Alias für die Authentifizierung in WLANs gewährt und für die Authentifizierung im entsprechenden WLAN verwendet. Unter Android 12 wird eine nonComplianceDetail mit dem Grund API_LEVEL erfasst. Ein nonComplianceDetail mit dem Grund INVALID_VALUE und dem spezifischen Grund ONC_WIFI_KEY_PAIR_ALIAS_NOT_CORRESPONDING_TO_EXISTING_KEY wird ausgegeben, wenn der angegebene Alias des Schlüsselpaars keinem vorhandenen Schlüssel entspricht. Hier 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, 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"
      }
   ]
}