התכונה שחזור פרטי כניסה בכלי לניהול פרטי כניסה מאפשרת למשתמשים לשחזר את החשבונות שלהם באפליקציות כשהם מגדירים מכשיר חדש. ממשק ה-API הזה נמצא בתצוגה מקדימה למפתחים והוא זמין בכל המכשירים עם Android מגרסה 9 ואילך ועם Google Play Services (GMS) Core מגרסה 242200000 ואילך. היתרונות של התכונה 'שחזור פרטי הכניסה' כוללים:
- חוויית משתמש חלקה: המשתמשים יכולים לשחזר את החשבון שלהם באפליקציה בלי להיכנס ידנית לכל אפליקציה בנפרד.
- שיפור המעורבות של המשתמשים: אם המשתמשים יכולים לשחזר את החשבון שלהם כשהם מגדירים מכשיר חדש, סביר יותר שהם ימשיכו להשתמש באפליקציה שלכם.
- פחות מאמץ פיתוח: התכונה 'שחזור פרטי כניסה' משולבת במנהל פרטי הכניסה, כך שמפתחים שכבר תומכים במפתחות גישה יכולים להוסיף יכולות שחזור של פרטי כניסה.
איך זה עובד
אתם יכולים להשתמש באפשרות 'שחזור פרטי הכניסה' כדי ליצור, לקבל ולנקות את פרטי הכניסה הרלוונטיים.
- יצירת פרטי כניסה לשחזור: כשמשתמש נכנס לאפליקציה שלכם, צריך ליצור פרטי כניסה לשחזור שמשויכים לחשבון שלו. האישורים האלה מאוחסנים באופן מקומי ומסונכרנים עם הענן אם המשתמש הפעיל את הגיבוי של Google ויש אפשרות להצפנה מקצה לקצה (אפליקציות יכולות לבחור שלא לסנכרן עם הענן)
- קבלת אישור השחזור: כשהמשתמש מגדיר מכשיר חדש, האפליקציה יכולה לבקש את אישור השחזור ממנהל האישורים. כך תוכלו להכניס את המשתמשים לחשבון באופן אוטומטי בלי לדרוש מהם להזין מידע נוסף.
- ניקוי פרטי הכניסה לשחזור: כשמשתמש מתנתק מהאפליקציה, צריך למחוק את פרטי הכניסה המשויכים לשחזור.
התכונה 'שחזור פרטי הכניסה' יכולה להשתלב בצורה חלקה עם מערכות קצה עורפי שכבר הטמיעו מפתחות גישה. התאימות הזו נובעת מהעובדה שמפתחות גישה ומפתחות שחזור (סוג האישורים שמשמשים בתכונה 'שחזור אישורים') פועלים לפי אותן מפרטים טכניים בסיסיים. ההתאמה הזו מבטיחה שתהליך שחזור פרטי הכניסה יוכל לאחזר ביעילות את פרטי הכניסה של המשתמשים שמאוחסנים במערכות שמופעל בהן מפתחות גישה, ולשחזר אותם. כך מתקבלת חוויה עקבית וידידותית למשתמש בפלטפורמות שונות ובשיטות אימות שונות.
הטמעה
ה-API לשחזור פרטי כניסה זמין דרך ספריית Credential Manager Jetpack. תחילה, מבצעים את הפעולות הבאות:
מוסיפים את התלות של Credential Manager לפרויקט.
// build.gradle.kts implementation("androidx.credentials:credentials:1.5.0-alpha03")
יוצרים אובייקט
CreateRestoreCredentialRequest
.מבצעים קריאה ל-method
createCredential()
באובייקטCredentialManager
.val credentialManager = CredentialManager.create(context) // On a successful authentication create a Restore Key // Pass in the context and CreateRestoreCredentialRequest object val response = credentialManager.createCredential(context, createRestoreRequest)
פרטי הכניסה לשחזור שנוצרו הם סוג של פרטי כניסה של WebAuthn, והם נקראים גם מפתח שחזור.
כשמשתמש מגדיר מכשיר חדש, קוראים למתודה
getCredential()
באובייקטCredentialManager
.// Fetch the Authentication JSON from server val authenticationJson = fetchAuthenticationJson() // Create the GetRestoreCredentialRequest object val options = GetRestoreCredentialOption(authenticationJson) val getRequest = GetCredentialRequest(listOf(options)) // The restore key can be fetched in two scenarios to // 1. On the first launch of app on the device, fetch the Restore Key // 2. In the onRestore callback (if the app implements the Backup Agent) val response = credentialManager.getCredential(context, getRequest)
כשהמשתמש מתנתק מהאפליקציה, צריך להפעיל את השיטה
clearCredentialState()
באובייקטCredentialManager
.// Create a ClearCredentialStateRequest object val clearRequest = ClearCredentialStateRequest(TYPE_CLEAR_RESTORE_CREDENTIAL) // On user log-out, clear the restore key val response = credentialManager.clearCredentialState(clearRequest)
אם אתם משתמשים בסוכן גיבוי, צריך לבצע את החלק getCredential
בתוך הקריאה החוזרת onRestore
. כך מוודאים שפרטי הכניסה של האפליקציה ישוחזרו מיד אחרי שנתוני האפליקציה ישוחזרו.
שאלות נפוצות
שאלה 1. מה ההבדל בין מפתח שחזור לבין מפתח גישה?
מפתח שחזור פועל באופן דומה למפתח גישה, אבל הוא מיועד במיוחד לשחזור חשבונות במכשירים חדשים. כשמשתמשים במנהל סיסמאות כמו מנהל הסיסמאות של Google כדי לבצע אימות, מפתחות הגישה והסיסמאות שניתן להשתמש בהם מוצגים, אבל מפתח השחזור לא מוצג כי הוא לא מיועד לכניסה רגילה לחשבון.
שאלה 2. האם מפתח השחזור הוא אישור חד-פעמי?
לא, מפתח שחזור הוא לא פרטי כניסה חד-פעמיים. מנהל פרטי הכניסה הוא חסר מצב ולא מודע לפעילות המשתמש, ולכן הוא לא יכול למחוק את המפתח באופן אוטומטי אחרי השימוש.
מפתחות שחזור מוסרים רק במצבים הבאים:
- פעולות ברמת המערכת: משתמשים מסירים את האפליקציה או מוחקים את הנתונים שלה.
- שיחות ברמת האפליקציה: אתם מוחקים את המפתח באופן פרוגרמטי על ידי קריאה ל-
CredentialManager#clearCredentialState()
כשאתם מטפלים בהתנתקות של המשתמש בקוד של האפליקציה.
שאלה 3. האם התכונה 'שחזור פרטי כניסה' פועלת רק במכשיר חדש?
כן, התכונה הזו מיועדת להגדרה הראשונית של מכשיר חדש עם Android, כי היא קשורה ישירות לפונקציונליות של הגיבוי והשחזור במערכת.
שאלה 4. האם אפשר להשתמש באפשרות 'שחזור פרטי כניסה' כדי להיכנס באופן שקט לחשבון של משתמש בכל מכשיר שמחובר לאותו חשבון Google?
לא, התכונה 'שחזור פרטי הכניסה' לא מיועדת לשימוש כללי בכניסה למכשירים. היא פועלת רק בתרחיש ספציפי אחד: כשמשתמש מגדיר מכשיר חדש על ידי שחזור גיבוי מהמכשיר הישן שלו. כדי שתהליך השחזור החד-פעמי יצליח, שני המכשירים צריכים להיות מקושרים לאותו חשבון Google.
שאלה 5. לארגון שלי יש אפליקציה ראשית אחת וכמה אפליקציות משנה. האם אפשר לשחזר מפתח אחד לכל האפליקציות האלה?
לא. מפתח השחזור קשור לשם החבילה הייחודי של האפליקציה. לאפליקציה הראשית ולכל אחת מהאפליקציות המשניות יש שמות חבילה שונים, ולכן צריך ליצור מפתח שחזור נפרד לכל אפליקציה.
שאלה 6. האם נדרש מפתח גישה כדי ליצור מפתח שחזור לחשבון של משתמש?
לא, לא צריך מפתח גישה. היכולת ליצור מפתח שחזור לא תלויה בשיטת הכניסה של המשתמש. המטרה שלו היא לשמור את מצב האימות הנוכחי של המשתמש. כל עוד המשתמש מחובר באופן פעיל לאפליקציה שלכם, אתם יכולים ליצור עבורו מפתח שחזור.
שאלה 7. האם המשתמש יכול למחוק את מפתח השחזור?
לא, למשתמש אין שליטה ישירה על מפתח השחזור. הלוגיקה של האפליקציה אחראית לניהול מפתחות השחזור.
מטעמי אבטחה, מומלץ שהאפליקציה תמחק את המפתח באופן אוטומטי בכל פעם שמשתמש מתנתק. כך מוודאים שבפעם הבאה שהמשתמש יפתח את האפליקציה באותו מכשיר, הוא ינותק מהחשבון ויקבל בקשה להתחבר שוב.
שאלה 8. האם אפשר להשתמש באפשרות 'שחזור פרטי כניסה' בלי להגדיר את allowBackup כ-true במניפסט?
כן, התכונה 'שחזור פרטי הכניסה' פועלת גם אם allowBackup מוגדר כ-true וגם אם לא.
שאלה 9. איך שחזור פרטי הכניסה יעבוד למשתמשים שמחוברים לכמה חשבונות באותה אפליקציה?
התכונה 'שחזור פרטי הכניסה' מיועדת לעבודה עם חשבון אחד בלבד בכל פעם.