정책을 사용하여 기기에서 Wi-Fi 네트워크를 구성할 수 있습니다. Android Management API는 원래 Chromium 프로젝트의 일부로 개발된 표준 JSON 기반 형식인 공개 네트워크 구성을 사용합니다. 개방형 네트워크 구성에 관한 자세한 내용은 사양을 참고하세요.
정책에 개방형 네트워크 구성을 포함하려면 Policy
리소스에서 openNetworkConfiguration
필드를 설정하세요.
완전 관리 기기의 경우 원하는 경우 Policy
리소스에서 wifiConfigDisabled
를 true
로 설정하여 사용자가 기기에서 Wi-Fi 설정을 수동으로 구성하지 못하도록 할 수 있습니다.
지원되는 기능
Android Management API는 개방형 네트워크 구성 사양의 하위 집합만 지원합니다.
- 최상위 객체:
Type
는 생략하거나UnencryptedConfiguration
로 설정해야 합니다. 전체 정책이 Android Management API 서비스 내에서 암호화되므로 정책 내에서 네트워크 구성을 암호화할 필요가 없습니다. 또한 암호 및 비공개 키와 같은 민감한 정보를 위한 두 번째 암호화 레이어가 있습니다.
NetworkConfiguration
객체:GUID
,Name
,Type
,WiFi
는 지원되는 필드이며 모두 필수입니다.ProxySettings
는 선택 필드입니다. 이 옵션을 사용하면Manual
및PAC
(프록시 자동 구성)만 지원됩니다.Type
은WiFi
로 설정해야 합니다. 다른 유형의 네트워크는 지원되지 않습니다.
WiFi
객체:SSID
및HexSSID
가 지원되며 둘 중 하나 이상이 있어야 합니다.HexSSID
와SSID
가 모두 설정된 경우 값이 일치해야 합니다.
HiddenSSID
가 지원됩니다.AllowGatewayARPPolling
가 지원되지 않습니다.SignalStrength
가 지원되지 않습니다.Security
는 필수 항목이며 다음 값이 지원됩니다. - 없음 - WEP-PSK - WPA-PSK - WPA-EAP - WEP-8021X - WPA3-Enterprise_192WEP-PSK
비밀번호의 경우 40비트 (10자리) 또는 104비트 (26자리) 비밀번호만 지원됩니다.- 사양에 따르면
WEP-PSK
비밀번호는0x
접두사로 시작해야 합니다. 그러나 Android 프레임워크와의 일관성을 위해 이 접두사는 필요하지 않습니다. - MAC 무작위 모드를 설정하려면
Hardware
또는Automatic
값으로 설정된MACAddressRandomizationMode
속성을 사용합니다. 이 속성은 현재 개방형 네트워크 구성 (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 네트워크
이 정책 프래그먼트 예에서는 서로 다른 보안 스키마로 구성된 Wi-Fi 네트워크 3개를 보여줍니다. 공개 네트워크 구성 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
객체 외에도 클라이언트 및 서버 인증서의 Certificates
객체 2개를 포함합니다.
"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 192비트 모드로 구성된 WPA-EAP 네트워크인 WPA3-Enterprise_192
일 수도 있습니다.
"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" } ] }