Você pode usar a política para configurar redes Wi-Fi em um dispositivo. A API Android Management usa Open Network Configuration, um formato padrão baseado em JSON desenvolvido originalmente como parte do projeto Chromium. Consulte a especificação para ver todos os detalhes sobre a Open Network Configuration.
Para incluir uma Configuração de rede aberta em uma política, defina o campo
openNetworkConfiguration
em um
recurso
Policy
.
Em dispositivos totalmente gerenciados, você pode impedir que um usuário defina manualmente
as configurações de Wi-Fi no dispositivo configurando wifiConfigDisabled
como
true
no
recurso
Policy
.
Recursos compatíveis
A API Android Management só oferece suporte a um subconjunto da especificação Open Network Configuration.
- Objeto de nível superior:
- O campo
Type
precisa ser omitido ou definido comoUnencryptedConfiguration
. Não é necessário criptografar a configuração de rede em uma política, porque a política inteira é criptografada no serviço da API Android Management. Além disso, há uma segunda camada de criptografia para informações sensíveis, como senhas longas e chaves privadas.
- O campo
- Objetos
NetworkConfiguration
:GUID
,Name
,Type
eWiFi
são campos aceitos e são obrigatórios.ProxySettings
é um campo opcional. Se ela for usada, apenasManual
ePAC
(configuração automática do proxy) serão compatíveis.Type
precisa ser definido comoWiFi
. Outros tipos de redes não são compatíveis.
- Objetos
WiFi
:- Não há suporte para
AllowGatewayARPPolling
. - Não há suporte para
SignalStrength
. Security
é obrigatório e os seguintes valores são compatíveis: - Nenhum - WEP-PSK - WPA-PSK - WPA-EAP - WEP-8021X - WPA3-Enterprise_192- Para as senhas longas
WEP-PSK
, somente as de 40 bits (10 dígitos) ou de 104 bits (26 dígitos) são compatíveis. - A especificação afirma que as senhas longas
WEP-PSK
precisam começar com o prefixo0x
. No entanto, para consistência com o framework do Android, esse prefixo não é necessário. - Para definir o modo de ordem aleatória de MAC, use a propriedade
MACAddressRandomizationMode
definida com os valoresHardware
ouAutomatic
. No momento, essa propriedade não está disponível na especificação Open Network Configuration (ONC), mas é fornecida em AMAPI e pode ser especificada na configuração de redes Wi-Fi. Isso se aplica apenas ao Android 13 e versões mais recentes em todos os modos de gerenciamento.- O
Hardware
usa o endereço MAC de fábrica ao se conectar à rede. Automatic
permite que o framework de Wi-Fi decida automaticamente a estratégia de ordem aleatória do MAC. Podem ser endereços MAC persistentes ou não persistentes, gerados aleatoriamente, que são usados ao se conectar à rede.
- O
- Não há suporte para
- Objetos
EAP
:- Não há suporte para
ClientCertPattern
. - Não há suporte para
SaveCredentials
. - Não há suporte para
UseSystemCAs
. DomainSuffixMatch
é compatível.
As configurações sem fio do Enterprise sem esse campo (ou com uma lista vazia como valor) são consideradas não seguras e rejeitadas pela plataforma. Os valores precisam ser nomes de domínio válidos (por exemplo, "example.com", "subdomain.example.com").ClientCertType
oferece suporte apenas ao valorRef
.- Os seguintes valores são aceitos para
Inner
:MSCHAPv2
,PAP
- Os seguintes valores são compatíveis com
Outer
:EAP-AKA
,EAP-TLS
,EAP-TTLS
,EAP-SIM
,PEAP
- Não há suporte para
- Objetos
Certificate
:- Não há suporte para
Remove
. Omita o certificado na configuração. - Não há suporte para
TrustBits
.
- Não há suporte para
Exemplos
Várias redes Wi-Fi
Este exemplo de fragmento de política mostra três redes Wi-Fi configuradas com
esquemas de segurança diferentes. O JSON de Open Network Configuration está aninhado no
campo openNetworkConfiguration
do JSON
Policy
.
"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" } }] }
Autenticação EAP
Este exemplo de fragmento de política mostra uma rede sem fio configurada com autenticação
EAP-TLS. Além do objeto NetworkConfigurations
, o exemplo
inclui dois objetos Certificates
para os certificados do cliente e do servidor.
"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" } ] }
O campo ClientCertType
também pode ser definido como KeyPairAlias
e o
campo ClientCertKeyPairAlias
pode ser usado para especificar o alias de um par de chaves KeyChain instalado
(consulte
DevicePolicyManager.installKeyPair
)
ou gerado (consulte
DevicePolicyManager.generateKeyPair
) usado para autenticação por Wi-Fi. No Android 12 e
versões mais recentes, o par de chaves KeyChain com o alias especificado com
ClientCertKeyPairAlias
é concedido para autenticação em redes Wi-Fi e
usado para autenticação na rede Wi-Fi correspondente. Em versões anteriores ao Android 12, uma
nonComplianceDetail
com o motivo
API_LEVEL
é informada. Uma notificação
nonComplianceDetail
com o motivo
INVALID_VALUE
e
um motivo específico de
ONC_WIFI_KEY_PAIR_ALIAS_NOT_CORRESPONDING_TO_EXISTING_KEY
será informada se o alias do par de chaves especificado não corresponder a
uma chave atual. Confira a seguir um exemplo de política:
"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" } ] }
O campo Security
também pode ser WPA3-Enterprise_192
, que é uma rede WPA-EAP configurada com o modo WPA3 de 192 bits.
"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" } ] }