Configurar redes

Você pode usar a política para configurar redes Wi-Fi em um dispositivo. O Android A API Management usa Open Network Configuration, um formato padrão baseado em JSON desenvolvido originalmente como parte do projeto Chromium. Consulte a especificação para detalhes completos sobre a Configuração de Rede Aberta.

Para incluir uma configuração de rede aberta em uma política, defina o openNetworkConfiguration em uma Policy recurso.

Em dispositivos totalmente gerenciados, você tem a opção de impedir que um usuário definindo as configurações de Wi-Fi no dispositivo definindo wifiConfigDisabled como true na Policy recurso.

Recursos compatíveis

A API Android Management só oferece suporte a um subconjunto da rede aberta Especificação de configuração.

  • Objeto de nível superior:
    • Type precisa ser omitido ou definido como UnencryptedConfiguration. Não há precisar criptografar a configuração de rede em uma política, porque os toda a política é criptografada no serviço da API Android Management. Além disso, há uma segunda camada de criptografia para dados como senhas longas e chaves privadas.
  • NetworkConfiguration objetos:
    • GUID, Name, Type e WiFi estão campos compatíveis e são obrigatórios.
    • ProxySettings é um campo opcional. Se for usado, apenas Manual e PAC (Configuração automática do proxy) são compatíveis.
    • Type precisa ser definido como WiFi. Outros tipos de redes não são compatíveis.
  • WiFi objetos:
    • AllowGatewayARPPolling não é compatível.
    • SignalStrength não é compatível.
    • Security é obrigatório, e os seguintes valores são compatíveis: - Nenhum – WEP-PSK – WPA-PSK – WPA-EAP – WEP-8021X – WPA3-Enterprise_192
    • Para senhas longas WEP-PSK, somente 40 bits (10 dígitos) ou 104 bits (26 dígitos) as senhas longas são compatíveis.
    • A especificação afirma que as senhas longas de WEP-PSK precisam começar com o 0x. No entanto, para manter a consistência com o framework do Android, não é necessário.
    • Para definir o modo de ordem aleatória de MAC, use a propriedade MACAddressRandomizationMode definido com os valores Hardware ou Automatic. No momento, essa propriedade está indisponível na especificação Open Network Configuration (ONC) mas é fornecido na AMAPI e pode ser especificado 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 o MAC estratégia de randomização. Pode ser persistente ou não persistente endereços MAC gerados aleatoriamente que são usados durante a conexão na rede.
  • EAP objetos:
    • ClientCertPattern não é compatível.
    • SaveCredentials não é compatível.
    • UseSystemCAs não é compatível.
    • DomainSuffixMatch é compatível.
      Configurações sem fio corporativas sem este campo (ou com uma lista como valor) são considerados não segura e rejeitada pela plataforma. Os valores devem ser nomes de domínio válidos (por exemplo, "example.com", "subdomain.example.com").
    • Os seguintes valores são compatíveis com ClientCertType: Ref e KeyPairAlias
    • Os seguintes valores são compatíveis com Inner: MSCHAPv2 e PAP
    • Os seguintes valores são compatíveis com Outer: EAP-AKA, EAP-TLS e EAP-TTLS, EAP-SIM e PEAP
  • Certificate objetos:
    • Remove não é compatível. Omitir o certificado na configuração como alternativa.
    • TrustBits não é compatível.

Exemplos

Várias redes Wi-Fi

Este exemplo de fragmento de política mostra três redes Wi-Fi configuradas com diferentes esquemas de segurança. O JSON de configuração de rede aberta está aninhado o campo openNetworkConfiguration do Policy JSON.

"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 EAP-TLS autenticação. 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 O campo ClientCertKeyPairAlias pode ser usado para especificar o alias de um servidor (consulte DevicePolicyManager.installKeyPair ) – em inglês. ou gerados (consulte DevicePolicyManager.generateKeyPair ) Par de chaves KeyChain usado para autenticação por Wi-Fi. No Android 12 e acima, o par de chaves KeyChain com o alias especificado O ClientCertKeyPairAlias é concedido para autenticação em redes Wi-Fi e é usada para autenticação na rede Wi-Fi correspondente. Abaixo do Android 12, uma nonComplianceDetail com API_LEVEL motivo for informado. Um nonComplianceDetail com INVALID_VALUE motivo e ONC_WIFI_KEY_PAIR_ALIAS_NOT_CORRESPONDING_TO_EXISTING_KEY um motivo específico será informado se o alias do par de chaves especificado não corresponder 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 é um protocolo 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"
      }
   ]
}