ポリシーを使用して、デバイスの Wi-Fi ネットワークを設定できます。Android Management API は、Chromium プロジェクトの一部として開発された標準の JSON ベースの形式である Open Network Configuration を使用します。
ポリシーにオープン ネットワーク構成を含めるには、Policy
リソースの openNetworkConfiguration
フィールドを設定します。
フルマネージド デバイスの場合、Policy
リソースで wifiConfigDisabled
を true
に設定することで、ユーザーがデバイスで Wi-Fi 設定を手動で構成できないようにすることができます。
サポートされている機能
Android Management API は、Open Network Configuration 仕様のサブセットのみをサポートしています。
- 最上位のオブジェクト:
Type
は省略するか、UnencryptedConfiguration
に設定する必要があります。ポリシー全体が Android Management API サービス内で暗号化されるため、ポリシー内のネットワーク構成を暗号化する必要はありません。また、パスフレーズや秘密鍵などの機密情報に対しては、第 2 の暗号化レイヤが適用されます。
NetworkConfiguration
オブジェクト:GUID
、Name
、Type
、WiFi
はサポートされているフィールドであり、すべて必須です。ProxySettings
は、オプション フィールドです。この場合、Manual
とPAC
(プロキシ自動設定)のみがサポートされます。Type
はWiFi
に設定する必要があります。他のタイプのネットワークはサポートされていません。
WiFi
オブジェクト:SSID
とHexSSID
はサポートされており、少なくとも 1 つは存在する必要があります。HexSSID
とSSID
の両方が設定されている場合、値は一貫している必要があります。
HiddenSSID
のみがサポートされています。AllowGatewayARPPolling
はご利用になれません。SignalStrength
はご利用になれません。AutoConnect
有効にすると、このネットワークはネットワーク選択時に接続候補として考慮されます。Security
は必須です。次の値がサポートされています。 - None - WEP-PSK - WPA-PSK - WPA-EAP - WEP-8021X - WPA3-Enterprise_192
WEP-PSK
パスフレーズでは、40 ビット(10 桁)または 104 ビット(26 桁)のパスフレーズのみがサポートされます。- 仕様では、
WEP-PSK
パスフレーズは接頭辞0x
で始まる必要があると規定されています。ただし、Android フレームワークとの整合性を保つため、この接頭辞は必須ではありません。 - MAC ランダム化モードを設定するには、値
Hardware
またはAutomatic
で設定されたプロパティMACAddressRandomizationMode
を使用します。このプロパティは 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
でサポートされている値は、Ref
、KeyPairAlias
です。Inner
でサポートされている値は、MSCHAPv2
、PAP
です。Outer
でサポートされている値は、EAP-AKA
、EAP-TLS
、EAP-TTLS
、EAP-SIM
、PEAP
です。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" ], "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_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" ], "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" } ] }