בצע אימות SMS בשרת

כדי לאמת מספרי טלפון באופן אוטומטי, עליך ליישם את חלקי הלקוח וגם את חלקי השרת של זרימת האימות. מסמך זה מתאר כיצד ליישם את חלק השרת.

שרת האימות הטלפוני אחראי לשלוש משימות:

  1. בניית הודעת אימות הכוללת קוד חד פעמי ובעלת הפורמט אליו מצפה ה- API של ה- Retriever SMS בצד הלקוח
  2. שליחת הודעת האימות למכשיר המשתמש
  3. אימות הקוד החד פעמי כאשר הוא נשלח חזרה לשרת והשלמת כל המשימות לאחר האימות שדורש ה- backend שלך

המפרט של אופן האינטראקציה של האפליקציה שלך עם השרת תלוי בך. גישה נפוצה היא חשיפת REST API עם שתי נקודות קצה: אחת שמקבלת בקשות לאימות מספר טלפון נתון ושולחת הודעות אימות SMS, ונקודת קצה שנייה שמקבלת קודים חד פעמיים מהאפליקציה שלך.

1. בנה הודעת אימות

כאשר השרת שלך מקבל בקשה לאימות מספר טלפון, בנה תחילה את הודעת האימות שתשלח למכשיר המשתמש. הודעה זו חייבת:

אחרת, תוכן הודעת האימות יכול להיות כל מה שתבחר. כדאי ליצור הודעה שממנה תוכלו לחלץ את הקוד החד פעמי בקלות בהמשך. לדוגמה, הודעת אימות חוקית עשויה להיראות כך:

Your ExampleApp code is: 123ABC78

FA+9qCX9VSu

יצירת קוד חד פעמי

אתה יכול ליישם קודים חד פעמיים במובנים רבים, כל עוד הקודים אינם ניתנים לאפשר וניתן לקשר את הקודים למשתמש או למספר טלפון כאשר אפליקציית הלקוח מחזירה אותם לשרת שלך. עליכם לעשות את הקודים קלים להקלדה, כדי להתאים לכל סיטואציה שעשויה לחייב משתמשים להקליד את הקוד באופן ידני.

אחת הדרכים ליישם קודים חד פעמיים היא ליצור מספרים אקראיים, בהם אתה משתמש כמפתחות בטבלת מסדי נתונים. לדוגמה, ייתכן שיש לך טבלה של אימות ממתינים, כדלקמן:

תְעוּדַת זֶהוּת מִשׁתַמֵשׁ תפוגה
123456789 ... 1234 2017-3-14 1:59

אתה יכול להשתמש במזהה המקודד base32 כקוד חד פעמי.

מחשב את מחרוזת החשיש של האפליקציה שלך

שירותי Google Play משתמשים במחרוזת הגיבוב כדי לקבוע אילו הודעות אימות יש לשלוח לאפליקציה שלך. מחרוזת ה- Hash מורכבת משם החבילה של האפליקציה שלך ותעודת המפתח הציבורי של האפליקציה שלך. כדי ליצור מחרוזת hash:

  1. אם אתה משתמש בחתימת אפליקציות על ידי Google Play , הורד את אישור חתימת האפליקציה שלך ( deployment_cert.der ) מקטע חתימת האפליקציות במסוף Google Play .

    לאחר מכן, ייבא את אישור החתימה על האפליקציה לחנות מפתח זמנית:

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

    אם אתה חותם ישירות על ה- APK שלך, דלג על שלב זה.

  2. קבל את אישור החתימה שלך על האפליקציה - זה שייבאת לעיל או את זה שאתה משתמש בו כדי לחתום ישירות על חבילות ה- APK שלך - כמחרוזת הקסס באותיות קטנות.

    לדוגמה, כדי להשיג את מחרוזת ה- hex ממחסן המפתחות הזמני שנוצר לעיל, הקלד את הפקודה הבאה:

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

    אם אתה חותם ישירות על ה- APK שלך, ציין את חנות המפתח לייצור ואת כינוי האישור שלך.

  3. אם יצרת חנות מפתחות זמנית, מחק אותה.

  4. הוסף את מחרוזת ה- hex לשם החבילה של האפליקציה שלך, מופרד על ידי רווח יחיד.

  5. חישב את סכום ה- SHA-256 של המחרוזת המשולבת. הקפד להסיר כל מרחב לבן מוביל או נגרר מהמחרוזת לפני שתחשב את סכום SHA-256.

  6. קידוד Base64 את הערך הבינארי של סכום ה- SHA-256. ייתכן שיהיה עליך לפענח תחילה את סכום ה- SHA-256 מתבנית הפלט שלו.

  7. מחרוזת הגיבוב של האפליקציה שלך היא 11 התווים הראשונים של הגיבוי המקודד ל- base64.

הפקודה הבאה מחשבת את מחרוזת ה- hash ממאגר המפתחות של היישום שלך:

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 SMS באתר המפתחים של Twilio.

כאשר מכשיר המשתמש מקבל הודעה זו, ההודעה מופנית לאפליקציה שלך. האפליקציה שלך מחלצת את הקוד החד פעמי ושולחת אותו בחזרה לשרת שלך כדי להשלים את תהליך האימות.

3. אמת את הקוד החד פעמי עם החזרתו

לשרת אימות מספר טלפון יש בדרך כלל נקודת קצה שנייה בה הוא משתמש כדי לקבל שוב קודים חד פעמיים מאפליקציות לקוח. כאשר השרת שלך מקבל קוד חד פעמי מהאפליקציה שלך בנקודת קצה זו, בצע את הפעולות הבאות:

  1. ודא שהקוד החד פעמי תקף ולא פג תוקפו.
  2. רשום שהמשתמש המקושר לקוד החד פעמי השלים את אימות מספר הטלפון.
  3. הסר את רשומת מסד הנתונים החד-פעמי של הקוד, או בדרך אחרת, וודא שלא ניתן יהיה להשתמש שוב באותו קוד.

כאשר אתה מקליט את סטטוס האימות של המשתמש ומסיר קוד חד פעמי ממסד הנתונים שלך, האימות הושלם.