ポリシーを使用して、デバイスの Wi-Fi ネットワークを設定できます。Android Management API は、Chromium プロジェクトの一部として開発された標準の JSON ベースの形式である Open Network Configuration を使用します。
ポリシーに 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: このフィールドは、ネットワークが自動的に有効になるかどうかを決定します。この設定は、デバイスの 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 ランダム化モードを設定するには、
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"
}
]
}