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 aufUnencryptedConfiguration
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
undWiFi
sind unterstützte Felder und alle Pflichtfelder.ProxySettings
ist ein optionales Feld. Wenn sie verwendet wird, werden nurManual
undPAC
(automatische Proxykonfiguration) unterstützt.Type
muss aufWiFi
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äfix0x
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 WertenHardware
oderAutomatic
. 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 WertRef
- 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" } ] }