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 aufUnencryptedConfiguration
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
undWiFi
sind unterstützte Felder und alle sind erforderlich.ProxySettings
ist ein optionales Feld. In diesem Fall werden nurManual
undPAC
(Proxy Auto-Configuration) unterstützt.- Für „
Type
“ muss „WiFi
“ festgelegt werden. Andere Netzwerktypen werden nicht unterstützt.
WiFi
Objekte:SSID
undHexSSID
werden unterstützt und mindestens eine davon muss vorhanden sein.- Wenn sowohl
HexSSID
als auchSSID
festgelegt sind, müssen die Werte übereinstimmen.
- Wenn sowohl
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äfix0x
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 WertenHardware
oderAutomatic
, 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" } ] }