تعيين أذونات تطبيق مخصصه

الإعلانات

تعيين أذونات تطبيق مخصصه

 

 

تعيين أذونات تطبيق مخصصه

يصف هذا المستند كيف يمكن لمطوري التطبيقات إستخدام خصائص الأمان التي يوفرها نظام الأندرويد لتعيين أذوناتهم الخاصة.

من خلال تعيين الأذونات المخصصة، يمكن للتطبيق مشاركة مصادره وقدراته مع التطبيقات الأخرى. لمزيد من المعلومات حول الأذونات، راجع نظرة عامة على الأذونات.

تعيين أذونات تطبيق مخصصه تعيين أذونات تطبيق مخصصه تعيين أذونات تطبيق مخصصه تعيين أذونات تطبيق مخصصه

 

 

 

معلومات أساسية


الأندرويد هو نظام تشغيل منفصل الإمتيازات، بحيث يتم تشغيل كل تطبيق بهوية نظام مستقله (معرف مستخدم لينوكس ومعرف المجموعة).

يتم فصل أجزاء من النظام أيضاً إلى هويات مستقله. وبالتالي، يقوم لينوكس بعزل التطبيقات عن بعضها البعض، وعن النظام.

يمكن أن تعرض التطبيقات وظائفها للتطبيقات الأخرى من خلال تعيين الأذونات التي يمكن أن تطلبها التطبيقات الأخرى.

كما يمكنها أيضاً تعيين الأذونات التي يتم توفيرها تلقائياً لأي تطبيقات أخرى موقعة بنفس الشهادة.

 

 

توقيع التطبيق


يجب توقيع جميع ملفات APK بشهادة يحتفظ مطوّرها بمفتاحها الخاص. تحدد هذه الشهادة مطور التطبيق.

لا يلزم توقيع الشهادة من قِبل الجهه الموثقة؛ من المسموح به، و النموذجي، لتطبيقات الأندرويد أن تستخدم شهادات موقعة ذاتياً.

الغرض من الشهادات في الأندرويد هو للتمييز بين مطوري التطبيق. وهذا يتيح للنظام منح أو رفض وصول التطبيقات إلى…

أذونات مستوى التوقيع وقبول أو رفض طلب التطبيق للحصول على نفس هوية لينوكس هذه، كتطبيق آخر.

 

 

 

 

معرفات المستخدم والوصول إلى الملفات


أثناء التثبيت، يعطي الأندرويد لكل حزمة معرّف مستخدم لينوكس مميز. تظل الهوية ثابتة طوال مدة بقاء الحزمة على هذا الجهاز.

على جهاز مختلف، قد تحتوي الحزمة نفسها على معرف مستخدم مختلف؛ ما يهم هو أن كل حزمة لديها معرف مستخدم مميز، على جهاز محدد.

نظراً لأن إجراءات الأمان تحدث على مستوى العملية، لا يمكن تشغيل كود أي من الحزمتين في نفس العملية..

بما أنها تحتاج إلى التشغيل كمستخدمي لينوكس مختلفين. يمكنك إستخدام السمة sharedUserId في وسم الإيضاح AndroidManifest.xml لكل حزمة، ليتم تعيينهما لهوية المستخدم نفسها.

من خلال القيام بذلك، بهدف الحماية يتم التعامل مع كلٍ من الحزمتين على أنهما نفس التطبيق، مع نفس معرف المستخدم وأذونات الملف.

لاحظ أنه من أجل الحفاظ على الأمان، فقط تطبيقين موقعين بنفس التوقيع (ويطلبان نفس sharedUserId) سيتم منحهما نفس معرف المستخدم.

أي بيانات يتم تخزينها بواسطة تطبيق، ستقوم بتعيين “معرف مستخدم” ذلك التطبيق، ولن تتمكن الحزم الأخرى عادة من الوصول إليه.

لمزيد من المعلومات حول نماذج أمان الأندرويد، راجع نظرة عامة حول أمان الأندرويد.

 

 

 

 

تعيين وتنفيذ الأذونات


لتنفيذ الأذونات الخاصة بك، يجب عليك أولاً أن تعلن عنها في ملف إيضاحك AndroidManifest.xml بإستخدام عنصر أو أكثر من عناصر <permission>.

على سبيل المثال، يمكن للتطبيق الذي يريد التحكم في من يمكنه بدء أحد أنشطته، الإعلان عن إذن لهذه العملية على النحو التالي:

 

ملاحظة: لا يسمح النظام لعدة حزم بإعلان إذن تحمل نفس الاسم، ما لم يتم توقيع جميع الحزم بنفس الشهادة.

إذا قامت حزمة بإعلان أذن، فإن النظام لن يسمح للمستخدم بتثبيت حزم أخرى تحمل نفس اسم الإذن، ما لم يتم توقيع هذه الحزم بنفس الشهادة كالحزمة الأولى.

لتجنب تعارض التسميات، يوصى بإستخدام نمط تسمية النطاق العكسي للأذونات المخصصة، على سبيل المثال com.example.myapp.ENGAGE_HYPERSPACE.

السمة protectionLevel (مستوى الحمايه) مطلوبة، حيث تخبر النظام بكيفية إبلاغ المستخدم بالتطبيقات التي تتطلب الإذن..

أو المسموح لها بحمل تلك الإذن، كما هو موضح في الوثائق المرتبطة.

تعد السمة android:permissionGroup إختياريه، وتستخدم فقط لمساعدة النظام في عرض الأذونات على المستخدم.

في معظم الحالات، يجب عليك تعيين هذه إلى مجموعة النظام القياسية (المدرجة في android.Manifest.permission_group).

على الرغم من أنه يمكنك إنشاء مجموعة بنفسك. إلا أنه من الأفضل إستخدام مجموعة حالية، لأن ذلك يبسّط واجهة الأذن، المعروضة للمستخدم.

تحتاج إلى توفير كلٍ من التسمية والوصف للإذن.

هذه مصادر سلاسل نصيه يمكن للمستخدم رؤيتها عند عرض قائمة أذونات (android:label) أو عند عرض تفاصيل لإذن واحده (android:description).

يجب أن تكون التسميه قصيرة؛ بضع كلمات تصف الوظيفة الرئيسية التي تحميها الإذن. يجب أن يكون الوصف عبارة عن زوج من الجمل التي تصف ما تسمح الإذن للحامل، بالوصول إليه.

إتفاقيتنا هي وصف مكون من جملتين: الجملة الأولى تصف الإذن، والجملة الثانية تحذر المستخدم من، نوع المخاطر التي يمكن أن تحدث إذا تم منح الإذن للتطبيق.

في ما يلي مثال على تسمية ووصف لإذن CALL_PHONE:

 

 

 

 

 

إنشاء مجموعة أذونات


 

كما هو موضح في القسم السابق، يمكنك إستخدام سمة
android:permissionGroup لمساعدة النظام على وصف الأذونات للمستخدم.

في معظم الحالات، ستحتاج إلى تعيين هذه إلى مجموعة النظام القياسية (المدرجة في android.Manifest.permission_group)..

ولكن يمكنك أيضاً تعيين مجموعتك الخاصة بإستخدام <permission-group>.

يعرّف العنصر <permission-group> تسمية لمجموعة من الأذونات – لكلٍ من، تلك المعلنة في الإيضاح بإستخدام عناصر <permission> وتلك المعلنة في مكان آخر.

يؤثر هذا فقط على كيفية تجميع الأذونات عند تقديمها للمستخدم. لا يحدد العنصر <permission-group> الأذونات التي تنتمي إلى المجموعة، ولكنه يعطي المجموعة أسماً.

يمكنك وضع إذن في المجموعة عن طريق تعيين أسم المجموعة إلى السمة permissionGroup الخاصة بالعنصر <permission>.

يعلن عنصر <permission-tree> عن نطاق لمجموعة من الأذونات التي تم تعريفها في الكود.

 

 

 

 

توصيات الإذونات المخصصة


يمكن للتطبيقات تحديد الأذونات المخصصة الخاصة بها، وطلب أذونات مخصصة من تطبيقات أخرى عن طريق تحديد عناصر <uses - permission>.

مع ذلك، يجب عليك تقدير ما إذا كان من الضروري قيام تطبيقك بذلك.

  • إذا كنت تقوم بتصميم مجموعة من التطبيقات التي تعرض الوظائف لبعضها البعض، فحاول تصميم التطبيقات بحيث يتم تعريف كل إذن مرة واحدة فقط.

يجب عليك القيام بهذا إذا لم يتم توقيع جميع التطبيقات بنفس الشهادة.

حتى إذا تم توقيع جميع التطبيقات بنفس الشهادة، فمن الأفضل تحديد كل إذن مرة واحدة فقط.

  • إذا كانت الوظيفة متاحة فقط للتطبيقات الموقعة بنفس التوقيع كالتطبيق المتوفر، فقد تكون قادراً على تجنب تعريف الأذونات المخصصة.

بإستخدام التحقق من التوقيع. عندما يطلب أحد تطبيقاتك طلباً من تطبيقاتك الأخرى.

يمكن للتطبيق الثاني التحقق من توقيع كلا التطبيقين بإستخدام نفس الشهادة قبل الإستجابة للطلب.

  • إذا كنت تقوم بتطوير تطبيقات لأجهزتك فقط، فيجب عليك تطوير وتثبيت حزمة تدير أذونات كافة التطبيقات في المجموعة.

لا تحتاج هذه الحزمة إلى تقديم أي خدمات بنفسها. هي تعلن فقط عن جميع الأذونات.

وتقوم بقية التطبيقات الأخرى في المجموعة بطلب تلك الأذونات بإستخدام عنصر <uses-permission>.

 

 


للإطلاع على المقال باللغة الإنجليزية أضغط هنا.

الإعلانات

اترك رد