إثبات الملكية عبر الرسائل القصيرة SMS على أحد الخوادم

لإثبات ملكية أرقام الهواتف تلقائيًا، يجب تنفيذ كل من حساب العميل الأجزاء من عملية إثبات الملكية. تصف هذه الوثيقة كيفية وتنفيذ جزء الخادم.

ويكون خادم التحقق من الهاتف مسؤولاً عن ثلاث مهام:

  1. يؤدي إنشاء رسالة تحقق تتضمن رمزًا يُستخدم لمرة واحدة مع بالتنسيق الذي تتوقعه واجهة برمجة التطبيقات SMS Retriever API من جهة العميل
  2. جارٍ إرسال رسالة التحقق إلى جهاز المستخدم.
  3. التحقّق من الرمز الذي يُستخدم لمرة واحدة عند إرساله مرة أخرى إلى الخادم وإكماله أي مهام ما بعد إثبات الملكية تتطلبها الخلفية

وأنت مَن يقرر كيفية تفاعل تطبيقك مع الخادم. من الشائع هو عرض واجهة برمجة تطبيقات REST بنقطتي نهاية، إحداهما تتلقى الطلبات إثبات ملكية رقم هاتف معين وإرسال رسائل التحقق عبر الرسائل القصيرة SMS نقطة النهاية الثانية التي تتلقى رموزًا لمرة واحدة من تطبيقك.

1. إنشاء رسالة تحقُّق

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

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

Your ExampleApp code is: 123ABC78

FA+9qCX9VSu

إنشاء رمز يُستخدم لمرة واحدة

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

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

رقم التعريف مستخدم انتهاء الصلاحية
123456789... 1234 2017-3-14 1:59

يمكنك استخدام رقم تعريف base32 كرمز يُستخدم لمرة واحدة.

احتساب سلسلة تجزئة تطبيقك

تستخدم "خدمات Google Play" سلسلة التجزئة لتحديد عملية إثبات الملكية إرسال الرسائل إلى تطبيقك. تتألّف سلسلة التجزئة من اسم حزمة تطبيقك. وشهادة المفتاح العام لتطبيقك. لإنشاء سلسلة التجزئة، اتّبِع الخطوات التالية:

  1. في حال استخدام ميزة ميزة "توقيع التطبيق" من Google Play: يمكنك تنزيل شهادة توقيع التطبيق (deployment_cert.der) من قسم توقيع التطبيق ضمن Google Play Console

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

    keytool -importcert -file deployment_cert.der -keystore temporary.keystore -alias PlayDeploymentCert
    

    في حال توقيع حِزم APK مباشرةً، يمكنك تخطّي هذه الخطوة.

  2. احصل على شهادة توقيع التطبيق، سواء كانت الشهادة التي استوردتها أعلاه أو الذي تستخدمه لتوقيع حِزم APK مباشرةً، كسلسلة سداسية عشرية بأحرف صغيرة.

    على سبيل المثال، لإنشاء السلسلة الست عشرية من ملف تخزين المفاتيح المؤقت أعلاه، اكتب الأمر التالي:

    keytool -exportcert -keystore temporary.keystore -alias PlayDeploymentCert | xxd -p | tr -d "[:space:]"
    

    إذا وقّعت حِزم APK مباشرةً، حدِّد ملف تخزين مفاتيح الإنتاج الاسم المستعار للشهادة.

  3. إذا أنشأت ملف تخزين مفاتيح مؤقتًا، عليك حذفه.

  4. يمكنك إلحاق السلسلة السداسية العشرية باسم حزمة تطبيقك، مع الفصل بينها بعلامة واحدة مساحة.

  5. حساب مجموع SHA-256 للسلسلة المدمجة. تأكد من إزالة أي المسافة البيضاء البادئة أو اللاحقة من السلسلة قبل حساب خوارزمية SHA-256 المجموع.

  6. ترميز Base64 للقيمة الثنائية لمجموع SHA-256. قد تحتاج إلى فك ترميز مجموع SHA-256 من تنسيق الإخراج الخاص به أولاً.

  7. إنّ سلسلة تجزئة تطبيقك هي أول 11 حرفًا من تنسيق base64. تجزئة.

يحتسب الأمر التالي سلسلة التجزئة من قناة الإصدار العلني لتطبيقك ملف تخزين المفاتيح:

keytool -exportcert -alias PlayDeploymentCert -keystore MyProductionKeys.keystore | xxd -p | tr -d "[:space:]" | echo -n com.example.myapp `cat` | sha256sum | tr -d "[:space:]-" | xxd -r -p | base64 | cut -c1-11

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

2. إرسال رسالة التحقق عبر SMS

بعد إنشاء رسالة التحقق، أرسل الرسالة إلى عنوان URL للمستخدم رقم هاتفك باستخدام أي نظام رسائل قصيرة SMS.

على سبيل المثال، يمكنك الاطّلاع على التحقق من التطبيقات باستخدام رسائل Twilio القصيرة على موقع مطور Twilio.

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

3- التحقّق من الرمز الذي يُستخدم لمرة واحدة عند إرجاعه

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

  1. تأكَّد من أنّ الرمز المستخدَم لمرة واحدة صالح ومن أنّ صلاحيته لم تنتهِ.
  2. سجِّل أنّ المستخدم المرتبط برمز يُستخدم لمرة واحدة قد أكمل رقم الهاتف. التحقق.
  3. قم بإزالة سجل قاعدة بيانات الرمز الذي يُستخدم لمرة واحدة، أو بطريقة أخرى، التأكد من لا يمكن استخدام نفس الرمز مرة أخرى.

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