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 aufUnencryptedConfiguration
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
undWiFi
sind unterstützte Felder und alle erforderlich.ProxySettings
ist ein optionales Feld. Wenn diese Option verwendet wird, werden nurManual
undPAC
(Proxy Auto-Configuration) unterstützt.Type
muss aufWiFi
festgelegt sein. Andere Arten von Netzwerken werden nicht unterstützt.
WiFi
-Objekte:SSID
undHexSSID
werden unterstützt und mindestens eines 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.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äfix0x
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 WertenHardware
oderAutomatic
, 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" } ] }