ネットワークの構成

ポリシーを使用してデバイスに Wi-Fi ネットワークを設定できます。Android Management API は Open Network Configuration を使用します。Open Network Configuration は、Chromium プロジェクトの一部として開発された標準の JSON ベースの形式です。オープン ネットワーク構成の詳細については、仕様をご覧ください。

オープン ネットワーク構成をポリシーに含めるには、Policy リソースの openNetworkConfiguration フィールドを設定します。

完全管理対象デバイスの場合、Policy リソースで wifiConfigDisabledtrue に設定することで、ユーザーがデバイスで Wi-Fi 設定を手動で構成できないようにすることもできます。

サポートされる機能

Android Management API は、Open Network Configuration の仕様のサブセットのみをサポートしています。

  • 最上位のオブジェクト:
    • Type は省略するか、UnencryptedConfiguration に設定する必要があります。ポリシー全体が Android Management API サービス内で暗号化されるため、ポリシー内のネットワーク構成を暗号化する必要はありません。さらに、パスフレーズや秘密鍵などの機密情報に対する 2 番目の暗号化レイヤもあります。
  • NetworkConfiguration オブジェクト:
    • GUIDNameTypeWiFi はサポートされているフィールドで、すべて必須です。
    • ProxySettings は、オプション フィールドです。これを使用する場合は、ManualPAC(プロキシの自動構成)のみがサポートされます。
    • TypeWiFi に設定する必要があります。他のタイプのネットワークはサポートされていません。
  • WiFi オブジェクト:
    • AllowGatewayARPPolling はご利用になれません。
    • SignalStrength はご利用になれません。
    • Security は必須で、次の値がサポートされています。 - なし - WEP-PSK - WPA-PSK - WPA-EAP - WEP-8021X - WPA3-Enterprise_192
    • WEP-PSK パスフレーズの場合、40 ビット(10 桁)または 104 ビット(26 桁)のパスフレーズのみがサポートされます。
    • この仕様では、WEP-PSK パスフレーズは接頭辞 0x で始める必要があります。ただし、Android フレームワークとの整合性を保つため、この接頭辞は必要ありません。
    • MAC ランダム化モードを設定するには、プロパティ MACAddressRandomizationMode を値 Hardware または Automatic で設定します。このプロパティは現在、Open Network Configuration(ONC)仕様では使用できませんが、AMAPI で提供され、Wi-Fi ネットワークの設定時に指定できます。これは、すべての管理モードで Android 13 以降にのみ適用されます。
      • Hardware はネットワークに接続する際に出荷時の MAC アドレスを使用します。
      • Automatic は、Wi-Fi フレームワークが MAC ランダム化戦略を自動的に決定できるようにします。これは、永続的または非永続的に生成された MAC アドレスのいずれかで、ネットワークへの接続中に使用されます。
  • EAP オブジェクト:
    • ClientCertPattern はご利用になれません。
    • SaveCredentials はご利用になれません。
    • UseSystemCAs はご利用になれません。
    • DomainSuffixMatch のみがサポートされています。
      このフィールドがない(または値として空のリストがある)企業のワイヤレス構成は、安全でないと見なされ、プラットフォームで拒否されます。 値は有効なドメイン名(「example.com」、「subdomain.example.com」など)にする必要があります。
    • ClientCertTypeRef 値のみをサポートします。
    • Inner では、MSCHAPv2PAP の値がサポートされています。
    • Outer では、EAP-AKAEAP-TLSEAP-TTLSEAP-SIMPEAP の値がサポートされています。
  • Certificate オブジェクト:
    • Remove はサポートされていません。代わりに、構成で証明書を省略します。
    • TrustBits はご利用になれません。

複数の Wi-Fi ネットワーク

このポリシー フラグメントの例は、異なるセキュリティ スキームで構成された 3 つの Wi-Fi ネットワークを示しています。Open Network Configuration JSON は、Policy JSON の openNetworkConfiguration フィールド内にネストされます。

"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 認証

このポリシー フラグメントの例は、EAP-TLS 認証が構成されたワイヤレス ネットワークを示しています。この例には、NetworkConfigurations オブジェクトに加えて、クライアント証明書とサーバー証明書の 2 つの Certificates オブジェクトが含まれています。

"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"
      }
   ]
}

ClientCertType フィールドを KeyPairAlias に設定することもできます。ClientCertKeyPairAlias フィールドは、Wi-Fi 認証に使用されるインストール済み(DevicePolicyManager.installKeyPair を参照)または生成された(DevicePolicyManager.generateKeyPair を参照)KeyChain 鍵ペアのエイリアスを指定するために使用できます。Android 12 以降では、ClientCertKeyPairAlias で指定されたエイリアスを持つ KeyChain 鍵ペアが、Wi-Fi ネットワークの認証に許可され、対応する Wi-Fi ネットワークの認証に使用されます。Android 12 では、API_LEVEL の理由を含む nonComplianceDetail が報告されます。指定された鍵ペアのエイリアスが既存の鍵に対応していない場合、INVALID_VALUE の理由と ONC_WIFI_KEY_PAIR_ALIAS_NOT_CORRESPONDING_TO_EXISTING_KEY の特定の理由を含む nonComplianceDetail が報告されます。ポリシーの例を次に示します。

"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"
      }
   ]
}

Security フィールドに WPA3-Enterprise_192 を指定することもできます。これは、WPA3 192 ビットモードで構成された WPA-EAP ネットワークです。

"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"
      }
   ]
}