ネットワークの構成

ポリシーを使用して、デバイスの Wi-Fi ネットワークを構成できます。Android Management API は、Chromium プロジェクトの一部として開発された標準の JSON ベースの形式である Open Network Configuration を使用します。

ポリシーに Open Network Configuration を含めるには、 openNetworkConfiguration フィールドを Policy リソースに設定します。

フルマネージド デバイスの場合、ユーザーがデバイスで Wi-Fi 設定を手動で 構成できないようにすることもできます。これを行うには、wifiConfigDisabledtrueに設定します。 Policy リソース。

サポートされている機能

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

  • 最上位のオブジェクト:
    • Type は省略するか、UnencryptedConfiguration に設定する必要があります。ポリシー全体が Android Management API サービス内で暗号化されるため、ポリシー内でネットワーク構成を暗号化する必要はありません。 また、パスフレーズや秘密鍵などの機密情報には、2 つ目の暗号化レイヤがあります。
  • NetworkConfiguration オブジェクト:
    • GUIDNameTypeWiFi はサポートされているフィールドであり、すべて必須です。
    • ProxySettings はオプション フィールドです。これを使用する場合、ManualPAC(プロキシ自動構成)のみがサポートされます。
    • TypeWiFi に設定する必要があります。他のタイプのネットワークはサポートされていません。
  • WiFi オブジェクト:
    • SSIDHexSSID がサポートされており、少なくとも 1 つは存在する必要があります。
      • HexSSIDSSID の両方が設定されている場合、値は一貫している必要があります。
    • HiddenSSID がサポートされています。
    • AllowGatewayARPPolling はサポートされていません。
    • SignalStrength はサポートされていません。
    • AutoConnect: このフィールドは、ネットワークが自動的に 有効になるかどうかを決定します。この設定は、デバイスの Wi-Fi 設定でユーザーが利用できるネットワークごとの自動接続オプションとは無関係です。
      • true に設定すると、ネットワークが有効になります。つまり、ユーザーがこのネットワークの自動接続を無効にしない限り、ユーザーが Wi-Fi 設定で明示的に選択しなくても、デバイス は自動的に接続できます。
      • false に設定すると、ネットワークは保存済み ネットワークのリストに追加されますが、有効にはなりません。デバイスは自動的に接続しません 。デバイスがネットワークに接続するには、ユーザー が Wi-Fi 設定でネットワークを 1 回手動で選択する必要があります。 最初の手動接続後、ネットワークは 有効として扱われ、ユーザーがこのネットワークの自動接続を無効にしない限り、デバイスは自動的に接続できます。
    • Security は必須であり、次の値がサポートされています: - None - WEP-PSK - WPA-PSK - WPA-EAP - WEP-8021X - WPA3-Enterprise_192
  • WEP-PSK パスフレーズの場合、40 ビット(10 桁)または 104 ビット(26 桁)のパスフレーズのみがサポートされます。
  • 仕様では、WEP-PSK パスフレーズは接頭辞 0x で始まる必要があります。ただし、Android フレームワークとの整合性を保つため、この接頭辞は必須ではありません。
  • MAC ランダム化 モード を設定するには、MACAddressRandomizationMode または Automatic の値で設定されたプロパティ Hardware を使用します。このプロパティは Open Network Configuration(ONC)仕様 では使用できませんが、AMAPI で提供されており、Wi-Fi ネットワークの構成時に指定できます。これは、すべての管理モードの Android 13 以降にのみ適用されます。
    • Hardware は、ネットワークに接続するときに出荷時の MAC アドレスを使用します。
    • Automatic を使用すると、Wi-Fi フレームワークが MAC ランダム化戦略を自動的に決定します。これは、ネットワークへの接続時に使用される、永続的または 非永続的 にランダムに生成された MAC アドレスです。
  • EAP オブジェクト:
  • ClientCertPattern はサポートされていません。
  • SaveCredentials は、認証情報が常に保存されるため、サポートされていません。
  • UseSystemCAs はサポートされていません。
  • ServerCARef がサポートされています。
  • ServerCARefs がサポートされています。
  • DomainSuffixMatch がサポートされています。このフィールドがない(または値が空のリストである)エンタープライズ ワイヤレス構成は安全でないと見なされ、 プラットフォームによって拒否されます 。値は有効なドメイン名(例: "example.com"、"subdomain.example.com")にする必要があります。
  • ClientCertType でサポートされている値は、RefKeyPairAlias です。
  • Inner でサポートされている値は、MSCHAPv2PAP です。
  • Outer でサポートされている値は、EAP-AKAEAP-TLSEAP-TTLSEAP-SIMEAP-PWDPEAP です。
  • Certificate オブジェクト:
    • Remove はサポートされていません。代わりに、構成で証明書を省略します。
    • TrustBits はサポートされていません。

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

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

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"
               ],
               "ServerCARefs": ["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_LEVELnonComplianceDetail が報告されます。指定された鍵ペアのエイリアスが既存の鍵に対応していない場合は、理由が INVALID_VALUE で、具体的な理由が ONC_WIFI_KEY_PAIR_ALIAS_NOT_CORRESPONDING_TO_EXISTING_KEYnonComplianceDetail が報告されます。ポリシーの例を次に示します。

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

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