iphone - شرح - what is web api




مصادقة الطلبات من تطبيق الجوال(iPhone) على ASP.Net Web API(التعليقات المطلوبة على تصميمي) (2)

أقوم بتصميم موقع على شبكة الإنترنت سيكون له رفيق هاتف متحرك (Initally iPhone فقط). سيكون موقع الويب أحد تطبيقات ASP.Net MVC 3. سيكون لدي أيضًا موقع ASP.Net Web API (MVC 4) لعرض الخدمات إلى تطبيق iPhone. سيكون لتطبيق iPhone شكله الخاص لالتقاط اسم المستخدم وكلمة المرور من المستخدم وإرساله إلى واجهة برمجة تطبيقات الويب في عناوين JSON.

أريد أن أعتبر الأمان من البداية بدلاً من التفكير بعده. أنا لست خبيرًا أمنيًا بأي وسيلة. لقد أجريت بحثًا جيدًا لمعرفة كيف يتعامل الآخرون مع مصادقة عميل تطبيقات الجوّال من إحدى خدمات الويب. أظن أنني قد توصلت إلى حل لائق لا ينطوي على التجنب إلى OAuths لجهة خارجية.

وسأكون ممتنا للغاية أي وجميع الآراء والمشورة والنقد و WTFs العامة التي يمكن لأي من أن تقدم. :)

اهتماماتي الكبرى هي:

  1. التأكد من أن المكالمات التي يتم إجراؤها على API على الويب مسموح بها
  2. التقليل من مخاطر هجمات إعادة التشغيل (ومن ثمّ تحديد الطوابع الزمنية في المكالمات أدناه)

سيتم تطوير تطبيق iPhone على النحو التالي:
يتم تشفير السلسلتين في تطبيق iPhone (نفس القيم لكل مستخدم):

  1. رقم الاستمارة
    هذه سلسلة تُستخدم لتحديد نوع العميل الذي يدخل إلى واجهة برمجة تطبيقات الويب (iPhone ، Android ، هاتف Windows ، إلخ).

  2. ملحمة التطهير التطبيق
    هذا هو سلسلة تستخدم لملح الملح لطلبات agnostic المستخدم.

يتم تخزين سلسلتين في قاعدة البيانات المحلية الخاصة بتطبيق iPhone (القيم الفريدة لكل مستخدم):

  1. رمز وصول مستخدم API
    هذا عبارة عن سلسلة (رمز مميز) يتم تقديمها للعميل بواسطة واجهة برمجة تطبيقات الويب عند المصادقة الناجحة ويسمح للعميل بالوصول إلى واجهة برمجة تطبيقات الويب دون إرسال اسم المستخدم وكلمة المرور في كل طلب.
  2. ملح هاششينغ المستخدم
    هذه سلسلة تُستخدم في تجزئات الملح للطلبات المقدمة ضد حسابات المستخدمين الحالية.



سيقوم iPhone بإجراء مكالمات إلى واجهة برمجة تطبيقات الويب بالطريقة التالية:

طريقة API: إنشاء حساب
يرسل العميل:

  • بيانات حساب جديدة (اسم المستخدم ، كلمة المرور ، الاسم الأول ، اسم العائلة ، إلخ.)
  • رقم الاستمارة
  • UTC Timestamp
  • تجزئة الطابع الزمني UTC + معرف التطبيق المملح مع ملحمة تجزئة التطبيق

إرجاع واجهة برمجة التطبيقات:

  • ملح هاشش مستخدم جديد

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

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


طريقة API: الحصول على حساب
(يستخدم للحصول على ملح تجزئة المستخدم للحسابات التي تم إنشاؤها على موقع الويب ولكن لم تتم مزامنتها بعد على iPhone. يحدث هذا عندما يحاول المستخدم تسجيل الدخول على iPhone و iPhone يكتشف أنه ليس لديه سجل لاسم المستخدم هذا .)

يرسل العميل:

  • اسم المستخدم
  • كلمة المرور (مجزأة مع ملح هاشش للتطبيق)
  • رقم الاستمارة
  • UTC Timestamp
  • تجزئة الطابع الزمني UTC + معرف التطبيق المملح مع ملحمة تجزئة التطبيق

إرجاع واجهة برمجة التطبيقات:

  • ملح هاششينج المستخدم الحالي


طريقة API: تسجيل الدخول (Authenticate)
يرسل العميل:

  • اسم المستخدم
  • كلمة المرور (مجزأة مع ملح هاشش المستخدم)
  • رقم الاستمارة
  • UTC Timestamp
  • التجزئة من الطابع الزمني UTC + معرف التطبيق المملح مع ملح هاششينغ المستخدم

إرجاع واجهة برمجة التطبيقات:

  • رمز وصول مستخدم API


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

  • بيانات القيادة
  • رمز وصول مستخدم API
  • رقم الاستمارة
  • UTC Timestamp
  • Hash of UTC الطابع الزمني + معرِّف التطبيق + واجهة المستخدم الخاصة بـ Access المميزة تم ملؤها باستخدام ملح تجزئة المستخدم


اقتراحاتي

  1. المصادقة والتخويل. بناء على خوادم مختلفة 2 (في بعض المشاريع لقد استخدمت 3 كذلك). خوادم بروكسي عكسي جيدة حقا مع هذا. المصادقة على خادم واحد وتفويضه على الآخر.

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

  1. يغلف كل شيء.

  2. استخدم SSL لكافة المعلومات الآمنة. في حالتي أنا استخدمه لكل شيء.

  3. بالنسبة إلى الطابع الزمني ، حدد وقتًا مناسبًا يمكنك الحصول على إذن له. لا تجعل هذا الأمر قصيرًا نظرًا لأن تطبيقك سيصبح بطيئًا أو طويلًا جدًا حيث يمكن للمتصلين بالشبكة الوصول إلى الحزم.

إذا كنت تريد بنية خادم 3 لطلباتك لديك مفتاح تطبيق بالإضافة إلى أنك تستخدم لإنشاء مفتاح وصول (من الخادم 1). سيصادق مفتاح الوصول هذا على طلباتك التي بعد المصادقة الناجحة (من الخادم 2) ، يمكنك استخدام هذا المفتاح لاعتماد طلباتك من خادم آخر (الخادم 3)

الطلبات التي ذكرتها هي معايير قياسية. لا أرى حقاً مشكلة في ذلك.





token