إعداد الشبكات

يمكنك استخدام السياسة لضبط شبكات Wi-Fi على جهاز. تستخدم واجهة برمجة التطبيقات Android Management API تنسيق Open Network Configuration، وهو تنسيق عادي مستند إلى JSON تم تطويره في الأصل كجزء من مشروع Chromium. يُرجى الرجوع إلى المواصفات للحصول على التفاصيل الكاملة حول إعداد الشبكة المفتوحة.

لتضمين إعداد شبكة مفتوحة في سياسة، اضبط الحقل openNetworkConfiguration في مورد Policy.

بالنسبة إلى الأجهزة المُدارة بالكامل، يمكنك اختياريًا منع المستخدم من ضبط إعدادات Wi-Fi يدويًا على جهازه من خلال ضبط wifiConfigDisabled على true في موارد Policy.

الميزات المتاحة

لا تتوافق واجهة برمجة التطبيقات Android Management API إلا مع مجموعة فرعية من مواصفات Open Network Configuration.

  • العنصر من المستوى الأعلى:
    • يجب حذف 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_192
    • بالنسبة إلى عبارات المرور التي تتألف من WEP-PSK كلمة، لا يمكن استخدام سوى عبارات المرور التي تتألف من 40 بت (10 أرقام) أو 104 بت (26 رقمًا).
    • تنص المواصفة على أنّ عبارات المرور WEP-PSK يجب أن تبدأ بالبادئة 0x. ومع ذلك، من أجل الاتساق مع إطار عمل Android، ليس هذا البادئة مطلوبًا.
    • لضبط وضع إنشاء عناوين MAC عشوائية، استخدِم السمة MACAddressRandomizationMode set مع القيم Hardware أو Automatic. لا تتوفّر هذه السمة حاليًا في مواصفات Open Network Configuration (ONC)، ولكنها متوفّرة في AMAPI ويمكن تحديدها أثناء ضبط شبكات WiFi. لا ينطبق ذلك إلا على الإصدار 13 من نظام التشغيل Android والإصدارات الأحدث في جميع أوضاع الإدارة.
      • يستخدم 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 تم ضبطها باستخدام مخططات أمان مختلفة. يكون تنسيق 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، يحتوي المثال على عنصرَي 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. في الإصدار 12 من نظام التشغيل Android والإصدارات الأحدث، يتم منح مفتاحَي التشفير في KeyChain اللذَين يتضمّنان الاسم المعرِّف الذي تم تحديده باستخدام ClientCertKeyPairAlias للمصادقة مع شبكات Wi-Fi ويتم استخدامهما للمصادقة مع شبكة Wi-Fi المقابلة. في الإصدارات الأقدم من Android 12، يتم تسجيل 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"
      }
   ]
}