پیکربندی شبکه ها

شما می‌توانید از پالیسی برای پیکربندی شبکه‌های وای‌فای در یک دستگاه استفاده کنید. API مدیریت اندروید از پیکربندی شبکه باز، یک فرمت استاندارد مبتنی بر JSON که در ابتدا به عنوان بخشی از پروژه کرومیوم توسعه داده شده بود، استفاده می‌کند.

برای گنجاندن پیکربندی شبکه باز در یک سیاست، فیلد openNetworkConfiguration را روی یک منبع Policy تنظیم کنید.

برای دستگاه‌های کاملاً مدیریت‌شده، می‌توانید با تنظیم wifiConfigDisabled روی true در منبع Policy ، به صورت اختیاری از پیکربندی دستی تنظیمات Wi-Fi توسط کاربر در دستگاه خود جلوگیری کنید.

ویژگی‌های پشتیبانی‌شده

رابط برنامه‌نویسی کاربردی مدیریت اندروید (Android Management API) تنها از زیرمجموعه‌ای از مشخصات پیکربندی شبکه باز (Open Network Configuration) پشتیبانی می‌کند.

  • شیء سطح بالا:
    • Type باید حذف شود یا روی UnencryptedConfiguration تنظیم شود. نیازی به رمزگذاری پیکربندی شبکه در یک خط‌مشی نیست زیرا کل خط‌مشی در سرویس API مدیریت اندروید رمزگذاری می‌شود. علاوه بر این، یک لایه دوم رمزگذاری برای اطلاعات حساس مانند عبارات عبور و کلیدهای خصوصی وجود دارد.
  • اشیاء NetworkConfiguration :
    • GUID ، Name ، Type و WiFi فیلدهای پشتیبانی‌شده و همگی الزامی هستند.
    • ProxySettings یک فیلد اختیاری است. در صورت استفاده از این فیلد، فقط تنظیمات Manual و PAC (پیکربندی خودکار پروکسی) پشتیبانی می‌شوند.
    • Type باید روی WiFi تنظیم شود. انواع دیگر شبکه‌ها پشتیبانی نمی‌شوند.
  • اشیاء WiFi :
    • SSID و HexSSID پشتیبانی می‌شوند و حداقل یکی از آنها باید موجود باشد.
      • اگر هر دو HexSSID و SSID تنظیم شده باشند، مقادیر باید یکسان باشند.
    • HiddenSSID پشتیبانی می‌شود.
    • AllowGatewayARPPolling پشتیبانی نمی‌شود.
    • SignalStrength پشتیبانی نمی‌شود.
    • AutoConnect : این فیلد تعیین می‌کند که آیا شبکه به طور خودکار فعال شود یا خیر. این تنظیم مستقل از گزینه اتصال خودکار برای هر شبکه است که در تنظیمات Wi-Fi دستگاه برای کاربران در دسترس است.
      • اگر روی true تنظیم شود، شبکه فعال می‌شود، به این معنی که دستگاه می‌تواند بدون انتخاب صریح کاربر در تنظیمات Wi-Fi، به طور خودکار به آن متصل شود، مگر اینکه کاربر اتصال خودکار را برای این شبکه غیرفعال کند.
      • اگر روی false تنظیم شود، شبکه به لیست شبکه‌های ذخیره شده اضافه می‌شود اما فعال نیست. دستگاه به طور خودکار به آن متصل نمی‌شود. برای اتصال دستگاه به شبکه، کاربر باید یک بار به صورت دستی شبکه را از تنظیمات Wi-Fi انتخاب کند. پس از اولین اتصال دستی، شبکه به عنوان فعال در نظر گرفته می‌شود و دستگاه می‌تواند به طور خودکار به آن متصل شود، مگر اینکه کاربر اتصال خودکار را برای این شبکه غیرفعال کند.
    • Security مورد نیاز است و مقادیر زیر پشتیبانی می‌شوند: - هیچکدام - WEP-PSK - WPA-PSK - WPA-EAP - WEP-8021X - WPA3-Enterprise_192
  • برای عبارات عبور WEP-PSK ، فقط عبارات عبور ۴۰ بیتی (۱۰ رقمی) یا ۱۰۴ بیتی (۲۶ رقمی) پشتیبانی می‌شوند.
  • طبق مشخصات، رمزهای عبور WEP-PSK باید با پیشوند 0x شروع شوند. با این حال، برای سازگاری با چارچوب اندروید، این پیشوند الزامی نیست.
  • برای تنظیم حالت تصادفی‌سازی MAC ، از ویژگی MACAddressRandomizationMode که با مقادیر Hardware یا Automatic تنظیم شده است، استفاده کنید. این ویژگی در مشخصات پیکربندی شبکه باز (ONC) در دسترس نیست، اما در AMAPI ارائه شده است و می‌تواند هنگام پیکربندی شبکه‌های Wi-Fi مشخص شود. این فقط برای اندروید ۱۳+ در تمام حالت‌های مدیریت اعمال می‌شود.
    • Hardware هنگام اتصال به شبکه از آدرس MAC کارخانه‌ای استفاده می‌کند.
    • Automatic به چارچوب وای‌فای اجازه می‌دهد تا به‌طور خودکار استراتژی تصادفی‌سازی مک را تعیین کند. این می‌تواند شامل آدرس‌های مک تصادفی پایدار یا ناپایدار باشد که هنگام اتصال به شبکه استفاده می‌شوند.
  • اشیاء 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 ، EAP-PWD ، PEAP
  • اشیاء Certificate :
    • Remove پشتیبانی نمی‌شود. در عوض، گواهی را در پیکربندی حذف کنید.
    • TrustBits پشتیبانی نمی‌شود.

مثال‌ها

چندین شبکه وای‌فای

این قطعه سیاست نمونه، سه شبکه Wi-Fi را نشان می‌دهد که با طرح‌های امنیتی مختلف پیکربندی شده‌اند. فایل JSON پیکربندی شبکه باز (Open Network Configuration JSON) در فیلد openNetworkConfiguration از فایل JSON Policy (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 ، این مثال شامل دو شیء 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 ​​می‌تواند برای مشخص کردن نام مستعار یک جفت کلید KeyChain نصب شده (به DevicePolicyManager.installKeyPair مراجعه کنید) یا تولید شده (به DevicePolicyManager.generateKeyPair مراجعه کنید) که برای احراز هویت Wi-Fi استفاده می‌شود، استفاده شود. برای اندروید ۱۲ و جدیدتر، جفت کلید KeyChain که نام مستعار آن با ClientCertKeyPairAlias ​​مشخص شده است، برای احراز هویت به شبکه‌های Wi-Fi اعطا می‌شود و برای احراز هویت به شبکه Wi-Fi مربوطه استفاده می‌شود. قبل از اندروید ۱۲، یک nonComplianceDetail با دلیل API_LEVEL گزارش می‌شود. اگر نام مستعار جفت کلید مشخص شده با یک کلید موجود مطابقت نداشته باشد، یک nonComplianceDetail با دلیل INVALID_VALUE و دلیل خاص ONC_WIFI_KEY_PAIR_ALIAS_NOT_CORRESPONDING_TO_EXISTING_KEY گزارش می‌شود. در زیر یک سیاست نمونه آمده است:

"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 باشد که یک شبکه WPA-EAP پیکربندی شده با حالت WPA3 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"
      }
   ]
}