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

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

يتحمل خادم التحقق من رقم الهاتف ثلاث مهام:

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

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

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

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

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

Your ExampleApp code is: 123ABC78

FA+9qCX9VSu

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

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

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

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

يمكنك استخدام المعرّف المشفر باستخدام base32 كرمز يتم استخدامه مرة واحدة.

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

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

  1. إذا كنت تستخدم توقيع التطبيق من Google Play، يمكنك تنزيل شهادة توقيع التطبيق (deployment_cert.der) من قسم توقيع التطبيق من وحدة تحكم Google Play.

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

    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

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

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

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

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

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

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

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