איך משלבים מפתחות גישה בשירות.
המבנה של מערכת מפתחות גישה
מערכת מפתחות גישה מורכבת מכמה רכיבים:
- צד נסמך: בהקשר של מפתחות גישה, צד נסמך (RP בקיצור) מטפל בהנפקה ובאימות של מפתחות גישה. ה-RP צריך להפעיל לקוח – אתר או אפליקציה שיוצרים מפתחות גישה או מאמתים באמצעות מפתחות גישה – ושרת לרישום, לאחסון ולאימות של פרטי הכניסה שנוצרו על ידי מפתחות הגישה בלקוח. אפליקציה לנייד עם מפתח גישה צריכה להיות מקושרת לדומיין של שרת RP באמצעות מנגנון השיוך שסופק על ידי מערכת ההפעלה, כמו קישורי נכסים דיגיטליים.
- Authenticator: מכשיר מחשוב כמו טלפון נייד, טאבלט, מחשב נייד או מחשב שולחני שיכול ליצור ולאמת מפתחות גישה באמצעות התכונה לביטול נעילת המסך שמוצעת על ידי מערכת ההפעלה.
- מנהל סיסמאות: תוכנה שמותקנת במכשירים של משתמשי הקצה ומספקת, מאחסנת ומסנכרנת מפתחות גישה, כמו מנהל הסיסמאות של Google.
תהליך ההרשמה
כדי ליצור ולרשום מפתח גישה חדש, משתמשים בממשק WebAuthn API באתר או בספריית Credential Manager באפליקציית Android.
כדי ליצור מפתח גישה חדש, צריך לספק כמה רכיבים מרכזיים:
- מזהה RP: מציינים את המזהה של הצד המסתמך בצורה של דומיין אינטרנט.
- פרטי המשתמש: המזהה של המשתמש, שם המשתמש והשם המוצג.
- פרטי הכניסה שצריך להחריג: מידע על מפתחות גישה שנשמרו בעבר כדי למנוע רישום כפול.
- סוגי מפתחות גישה: האם להשתמש במכשיר עצמו ("מאמת פלטפורמה") בתור מאמת, או במפתח אבטחה נייד ("מאמת חוצה פלטפורמות / נייד"). בנוסף, המתקשרים יכולים לציין אם הם רוצים שהאישורים יהיו גלויים כדי שהמשתמש יוכל לבחור חשבון להתחברות.
אחרי שספק שירות מבקש ליצור מפתח גישה והמשתמש מאמת אותו באמצעות שחרור נעילת המסך, נוצר מפתח גישה חדש ומוחזרים פרטי כניסה של מפתח ציבורי. שולחים את זה לשרת ושומרים את מזהה האישורים ואת המפתח הציבורי לאימות עתידי.
כאן אפשר לקרוא איך יוצרים מפתח גישה ואיך רושמים אותו.
- באינטרנט: יצירת מפתח גישה לכניסה ללא סיסמה
- ב-Android: הוספת אימות חלק לאפליקציות באמצעות מפתחות גישה באמצעות Credential Manager API
תהליך האימות
משתמשים ב-WebAuthn API באתר או בספריית Credential Manager באפליקציית Android כדי לבצע אימות באמצעות מפתח גישה רשום.
כדי לבצע אימות באמצעות מפתח גישה, צריך לספק כמה רכיבים מרכזיים:
- מזהה RP: מציינים את המזהה של הצד המסתמך בצורה של דומיין אינטרנט.
- אתגר: אתגר שנוצר על ידי השרת ומונע מתקפות שידור חוזר.
אחרי שספק שירות (RP) מבקש אימות באמצעות מפתח גישה והמשתמש מאמת אותו באמצעות ביטול הנעילה של המסך, מוחזרים פרטי כניסה של מפתח ציבורי. שולחים את זה לשרת ומאמתים את החתימה באמצעות המפתח הציבורי שמאוחסן.
מידע נוסף על אימות באמצעות מפתח גישה:
- באינטרנט: כניסה באמצעות מפתח גישה דרך מילוי אוטומטי של טופס
- ב-Android: הוספת אימות חלק לאפליקציות באמצעות מפתחות גישה באמצעות Credential Manager API
שילובים בצד השרת
כשיוצרים מפתח גישה, השרת צריך לספק פרמטרים של מפתח, כמו אתגר, פרטי משתמש, מזהי אישורים להחרגה ועוד. לאחר מכן, הוא מאמת את פרטי הכניסה של המפתח הציבורי שנוצר ונשלח מהלקוח, ומאחסן את המפתח הציבורי במסד הנתונים. כדי לבצע אימות באמצעות מפתח גישה, השרת צריך לאמת בקפידה את פרטי הכניסה ולאמת את החתימה כדי לאפשר למשתמש להיכנס.
מידע נוסף זמין במדריכים שלנו בנושא תיוג בצד השרת:
מנגנוני אימות קיימים (קודמים)
כשמוסיפים תמיכה במפתחות גישה לשירות קיים, המעבר ממנגנון אימות ישן יותר, כמו סיסמאות, למפתחות גישה לא קורה ביום אחד. אנחנו יודעים שתרצו להסיר את שיטת האימות הפחות חזקה בהקדם האפשרי, אבל פעולה כזו עלולה לגרום לבלבול בקרב המשתמשים או להשאיר חלק מהמשתמשים מאחור. מומלץ להשתמש בינתיים בשיטת האימות הקיימת.
יש כמה סיבות לכך:
- יש משתמשים בסביבה שלא תואמת למפתחות גישה: התמיכה במפתחות גישה מתרחבת באופן נרחב במערכות הפעלה ובדפדפנים רבים, אבל משתמשים בגרסאות ישנות יותר עדיין לא יכולים להשתמש במפתחות גישה.
- הסביבה העסקית של מפתחות הגישה עדיין לא בשלה: הסביבה העסקית של מפתחות הגישה נמצאת בתהליך התפתחות. אפשר לשפר את פרטי חוויית המשתמש והתאימות הטכנית בין סביבות שונות.
- יכול להיות שהמשתמשים עדיין לא מוכנים להשתמש במפתחות גישה: יש אנשים שמתקשים להסתגל לשינויים. ככל שהשימוש במפתחות גישה יתרחב, הם יבינו איך מפתחות גישה פועלים ולמה כדאי להשתמש בהם.
בדיקה מחדש של מנגנון האימות הקיים
מפתחות גישה הופכים את האימות לפשוט ובטוח יותר, אבל השארת המנגנונים הישנים היא כמו השארת חור. מומלץ לבדוק ולשפר את מנגנוני האימות הקיימים.
סיסמאות
יצירת סיסמאות חזקות וניהול שלהן לכל אתר הם משימות מאתגרות למשתמשים. מומלץ מאוד להשתמש במנהל סיסמאות שמוטמע במערכת או במנהל סיסמאות עצמאי. שינוי קטן בטופס הכניסה יכול לשפר משמעותית את האבטחה של אתרים ואפליקציות ואת חוויית הכניסה. כך מבצעים את השינויים האלה:
- שיטות מומלצות לטופס כניסה (באינטרנט)
- שיטות מומלצות לטופס הרשמה (אינטרנט)
- כניסה של משתמש באמצעות Credential Manager (Android)
אימות דו-שלבי
שימוש במנהל סיסמאות עוזר למשתמשים לנהל את הסיסמאות שלהם, אבל לא כל המשתמשים משתמשים במנהלי סיסמאות. כדי להגן על משתמשים כאלה, נהוג לבקש מהם פרטי כניסה נוספים שנקראים סיסמה חד-פעמית (OTP). בדרך כלל מקבלים קודים חד-פעמיים באימייל, בהודעת SMS או באפליקציית אימות כמו מאמת החשבונות של Google. הסיבה לכך היא שסיסמאות חד-פעמיות הן בדרך כלל טקסט קצר שנוצר באופן דינמי ותקף רק לפרק זמן מוגבל, ולכן הסיכוי לפריצה לחשבון נמוך יותר. השיטות האלה לא חזקות כמו מפתח גישה, אבל הן הרבה יותר טובות מאשר להשאיר את המשתמשים רק עם סיסמה.
אם בחרתם ב-SMS כדרך לשליחת קוד אימות חד-פעמי, כדאי לעיין בשיטות המומלצות הבאות כדי לשפר את חוויית המשתמש בהזנת קוד האימות החד-פעמי.
- שיטות מומלצות לשימוש בטופס OTP באמצעות SMS (אינטרנט)
- אימות אוטומטי של SMS באמצעות ממשק ה-API של SMS Retriever (Android)
איחוד זהויות
אפשרות נוספת היא איחוד זהויות, שמאפשר למשתמשים להיכנס לחשבון בקלות ובצורה מאובטחת. באמצעות איחוד זהויות, אתרים ואפליקציות יכולים לאפשר למשתמשים להיכנס באמצעות הזהות שלהם מספק זהויות של צד שלישי. לדוגמה, הכניסה באמצעות חשבון Google מספקת למפתחים המרות מצוינות, והמשתמשים מעדיפים אותה על אימות שמבוסס על סיסמה כי היא קלה יותר. איחוד שירותי אימות הזהות משלים את השימוש במפתחות גישה. הוא מצוין להרשמה כי האתר או האפליקציה יכולים לקבל פרטים בסיסיים מהפרופיל של המשתמש בשלב אחד, ומפתחות גישה מצוינים לייעול של אימות מחדש.
חשוב לזכור: אחרי ש-Chrome יוציא משימוש קובצי Cookie של צד שלישי בשנת 2024, יכול להיות שחלק ממערכות איחוד הזהויות יושפעו, בהתאם לאופן שבו הן בנויות. כדי לצמצם את ההשפעה, אנחנו מפתחים ממשק API חדש לדפדפן שנקרא Federated Credential Management API (בקיצור FedCM). אם אתם מפעילים ספק זהויות, כדאי לעיין בפרטים כדי לראות אם אתם צריכים להטמיע את FedCM.
- Federated Credential Management API (Web, FedCM)
- סקירה כללית של כניסה באמצעות חשבון Google לאינטרנט (אינטרנט, כניסה באמצעות חשבון Google)
- סקירה כללית של כניסה בהקשה אחת ב-Android (Android, כניסה בהקשה אחת)
"קישורים קסומים"
כניסה באמצעות קישור קסם היא שיטת אימות שבה שירות שולח קישור לכניסה באימייל, כדי שהמשתמש יוכל ללחוץ עליו ולאמת את עצמו. השיטה הזו עוזרת למשתמשים להיכנס לחשבון בלי לזכור סיסמה, אבל המעבר בין הדפדפן או האפליקציה לבין לקוח האימייל עלול להיות מסורבל. בנוסף, מכיוון שמנגנון האימות מסתמך על האימייל, אבטחה חלשה של ספק האימייל עלולה לסכן את חשבונות המשתמשים.
משאבי למידה
פיתוח אתרים
כדי לשלב מפתחות גישה באתר, צריך להשתמש ב-Web Authentication API (WebAuthn). מידע נוסף זמין במקורות המידע הבאים:
- יצירת מפתח גישה לכניסה ללא סיסמה: מאמר שמתאר איך לאפשר למשתמשים ליצור מפתחות גישה לאתר.
- כניסה באמצעות מפתח גישה דרך מילוי אוטומטי של טופס: מאמר שמתאר איך צריך לעצב כניסה ללא סיסמה באמצעות מפתחות גישה, תוך התחשבות במשתמשים קיימים עם סיסמאות.
- הטמעה של מפתחות גישה עם מילוי אוטומטי של טפסים באפליקציית אינטרנט: סדנת קוד שבה אפשר ללמוד איך להטמיע מפתחות גישה עם מילוי אוטומטי של טפסים באפליקציית אינטרנט כדי ליצור כניסה פשוטה ובטוחה יותר.
- עזרה למשתמשים בניהול מפתחות גישה בצורה יעילה: כדי לממש את הפוטנציאל של מפתחות הגישה, חשוב לתת תשומת לב לחוויית המשתמש בכל מה שקשור לניהול שלהם. במסמך הזה מפורטות הנחיות ותכונות אופציונליות לעיצוב מערכת אינטואיטיבית, מאובטחת ויציבה לניהול מפתחות גישה.
- מפתחות גישה מאובטחים וחלקים: רשימת משימות לפריסה: רשימת המשימות הזו תעזור לכם להבין את ההיבטים העיקריים של הטמעת מפתחות גישה כדי להשיג את התוצאות הטובות ביותר מבחינת חוויית המשתמש.
Android
כדי לשלב מפתחות גישה באפליקציית Android, צריך להשתמש בספריית מנהל פרטי הכניסה. מידע נוסף זמין במשאבים הבאים:
- כניסה של משתמש באמצעות Credential Manager: מאמר שבו מוסבר איך לשלב את Credential Manager ב-Android. Credential Manager הוא Jetpack API שתומך בכמה שיטות כניסה, כמו שם משתמש וסיסמה, מפתחות גישה ופתרונות כניסה מאוחדים (כמו כניסה באמצעות חשבון Google) ב-API יחיד.
- הוספת אימות חלק לאפליקציות באמצעות מפתחות גישה דרך Credential Manager API: במאמר הזה מוסבר איך לשלב מפתחות גישה דרך Credential Manager ב-Android.
- איך מפשטים את תהליכי האימות באמצעות Credential Manager API באפליקציית Android: איך מטמיעים את Credential Manager API כדי לספק אימות חלק ומאובטח באפליקציה באמצעות מפתחות גישה או סיסמה.
- אפליקציה לדוגמה של מנהל פרטי הכניסה: קוד לדוגמה שמריץ את מנהל פרטי הכניסה ומאפשר שימוש במפתחות גישה.
- שילוב של Credential Manager עם פתרון ספק האישורים | Android Developers
חוויית משתמש
המלצות לשיפור חוויית המשתמש עם מפתחות גישה: