באינטרנט
אפשר לקבל תעודות מזהות גם באפליקציה וגם באתר. כדי לאשר את פרטי הכניסה מ-Google Wallet, צריך:
- מבצעים אינטגרציה דרך האפליקציה או האתר לפי ההוראות שסופקו,
- יש למלא את הטופס הזה כדי לבקש לקבל פרטי כניסה מ-Google Wallet, ולאשר את התנאים וההגבלות.
דרישות מוקדמות
כדי לבדוק את הצגת התעודות המזהות, תחילה צריך להירשם לתוכנית הבטא הציבורית באמצעות חשבון הבדיקה המיועד. לאחר מכן, עליך למסור את הפרטים הבאים לאיש הקשר הייעודי שלך ב-Google.
- קישור לתנאים ולהגבלות
- לוגו
- אתר
- מזהה החבילה בחנות Play (לשילובים של אפליקציות ל-Android)
- מזהה Gmail ששימש להצטרפות לגרסת הבטא הציבורית
פורמטים נתמכים של פרטי כניסה
יש כמה הצעות לסטנדרטים שמגדירים את פורמט הנתונים של מסמכי זהות דיגיטליים, ושניים מהם צברו תאוצה משמעותית בתעשייה:
- mdocs – מוגדר על ידי ISO.
- W3C Verifiable Credentials – מוגדרים על ידי W3C.
'מנהל פרטי הכניסה של Android' תומך בשני הפורמטים, אך בשלב זה Google Wallet תומך רק במזהים דיגיטליים המבוססים על mdoc.
חוויית משתמש
כשאפליקציה מבקשת מאפייני זהות, מתרחש התהליך הבא:
גילוי פרטי כניסה: האפליקציה שולחת שאילתות לארנקים הזמינים כדי לזהות פרטי כניסה שיכולים לענות על הבקשה. לאחר מכן, מערכת Android מציגה בורר של ממשק המשתמש של המערכת, שבו מוצג המידע שרוצים לשתף. כך המשתמש יכול לקבל החלטה מושכלת לגבי פרטי הכניסה שבהם הוא רוצה להשתמש.
בחירת משתמש ואינטראקציה עם ארנק: המשתמש בוחר פרטי כניסה, ו-Android מפעיל את אפליקציית הארנק המתאימה כדי להשלים את העסקה. יכול להיות שתוצג באפליקציית Wallet בקשת הסכמה משלה או שתתבקשו לאשר את הבקשה באמצעות זיהוי ביומטרי.
התוצאה: אם המשתמש מביע הסכמה, פרטי הכניסה לזהות שנבחרו ישותפו עם האפליקציה שממנה נשלחה הבקשה. אם המשתמש דוחה את הבקשה, תוחזר שגיאה.
באפליקציה
כדי לבקש פרטי כניסה לזיהוי מאפליקציות ל-Android:
עדכון יחסי התלות
בקובץ build.gradle של הפרויקט, מעדכנים את יחסי התלות כך שישתמשו ב-Credential Manager (בטא):
dependencies {
implementation("androidx.credentials:credentials:1.5.0-alpha05")
// optional - needed for credentials support from play services, for devices running Android 13 and below.
implementation("androidx.credentials:credentials-play-services-auth:1.5.0-alpha05")
}
הגדרת Credential Manager
כדי להגדיר ולאתחל אובייקט CredentialManager
, מוסיפים לוגיקה דומה לזו:
// Use your app or activity context to instantiate a client instance of CredentialManager.
val credentialManager = IdentityCredentialManager.Companion.getClient(context)
מאפייני הזהות של הבקשות
// Retrieves the user's digital identites from wallet apps for your app.
val getIdentityCredentialOption = GetDigitalCredentialOption(
requestJson = requestJson, // this is what partners needs to set, example JSON specified below
)
val result = credentialManager.getCredential(request = GetCredentialRequest(credentialOptions, ...)
מבצע הקריאה החוזרת של האפליקציה מספק את כל הפרמטרים של IdentityRequest כמחרוזת JSON. כאן הוא מיוצג כפרמטר requestMatcher
של CredentialOption. מנהל פרטי הכניסה לא עוסק בתוכן של קובץ ה-json הזה. בקשת ה-JSON הזו תועבר ישירות לארנקים, שאחראים לנתח אותה ולהחליט אילו פרטי כניסה יכולים למלא את הבקשה. ההטמעה המלאה מופיעה באפליקציית הדוגמה.
אנחנו צופים ש-W3C יגדיר את בקשת ה-JSON הזו כרכיב של ה-API לאינטרנט. התקינה הזו תאפשר לדפדפנים להעביר את הבקשה ישירות ל-Android.
כדי להמחיש איך הבקשה עשויה להיראות, הנה דוגמה לבקשת mdoc:
{
"selector": {
"format": [
"mdoc"
],
"doctype": "org.iso.18013.5.1.mDL",
"fields": [
{
"namespace": "org.iso.18013.5.1",
"name": "family_name",
"intentToRetain": false
},
{
"namespace": "org.iso.18013.5.1",
"name": "given_name",
"intentToRetain": false
},
{
"namespace": "org.iso.18013.5.1",
"name": "age_over_21",
"intentToRetain": false
}
]
},
"nonce": "3cydsUF9xNFyBDAAWOct09hEeSqrFX2WB2r0G6f8Ol0=",
"readerPublicKey": "BApmGdElal2-1dtafsdHVRa1EpAWZfhlQj_iof2I8L3V8_dCK1gVR0_12E4ZSQ2LcqXRd4zxVeKEqU1wUSgGWUU="
}
התגובה מחזירה identityToken (מחרוזת JSON), המוגדר על ידי W3C. אפליקציית Wallet אחראית על יצירת התגובה הזו.
דוגמה:
{
"token": "<base64 encoded response>"
}
שליחת הטוקן ועיבוד שלו בשרת
לאחר קבלת identityToken, האפליקציה צריכה להעביר אותו לשרת האפליקציות לצורך אימות. השלב הראשון הוא פענוח האסימון מפורמט base64. מערך הבייטים שמתקבל מייצג את נתוני CBOR, שמצייתים ל-CDDL הבא.
CredentialDocument = {
"version": tstr, // Set to "ANDROID-HPKE-v1"
"pkEm": bstr, // Public key, in uncompressed form
"cipherText": bstr // The encrypted data
}
השלב הבא הוא לחשב את SessionTranscript לפי תקן ISO/IEC 18013-5:2021 עם מבנה העברה ספציפי ל-Android:
SessionTranscript = [
null, // DeviceEngagementBytes not available
null, // EReaderKeyBytes not available
AndroidHandover // Defined below
]
AndroidHandover = [
"AndroidHandoverv1", // Version number
nonce, // nonce that comes from request
appId, // RP package name
pkRHash, // The SHA256 hash of the recipient public key
]
הטקסט המוצפן cipherText מוצפן באמצעות הצפנת HPKE. כדי לפענח אותו, צריך להשתמש ב-SessionTranscript בתור הנתונים המאומתים הנוספים, יחד עם המפתח הפרטי של EC שנוצר קודם, וההגדרות הבאות:
- KEM: DHKEM(P-256, HKDF-SHA256)
- KDF: HKDF-SHA256
- AEAD: AES-128-GCM
הטקסט ללא הצפנה שנוצר הוא הבייטים של DeviceResponse ב-CBOR כפי שהם מוגדרים ב-ISO/IEC 18013-5:2021. יש לאמת את DeviceResponse בהתאם לסעיף 9 בתקן ISO/IEC 18013-5:2021. התהליך הזה כולל כמה שלבים. למשל, אימות שה-mdoc מגיע ממנפיק מהימן ושהתגובה חתומה על ידי המכשיר המיועד. אפשר להשתמש בכיתה DeviceResponseParser מפרויקט OpenWallet Foundation Identity Credential כחלק מתהליך האימות הזה.
פיתוח אתרים
כדי לבקש פרטי כניסה לזיהוי באמצעות Digital Credentials API ב-Chrome, צריך להירשם לגרסת המקור לניסיון של Digital Credentials API.
השתתפות פיזית
כדי לקבל תעודות מזהות מ-Google Wallet, צריך לבצע את השלבים הבאים:
- פיתוח או רכישה של קורא שמקבל תעודות מזהות כפי שמוגדרות בתקן ISO 18013-5
- צריך לטעון אישורי IACA בקורא כדי לוודא שהתעודות המזהות הקבילות אותנטיות
- בדיקת הפתרון
- רישום האפליקציה ב-Google Wallet
פיתוח או רכישה של קורא שמקבל תעודות מזהות כפי שמוגדרות בתקן ISO 18013-5
התעודות המזהות ב-Wallet מיושמות בהתאם לתקן ISO 18013-5 לרישיונות נהיגה בנייד. הם משתמשים באינטראקציה מבוססת-NFC או בקוד QR בשילוב עם BLE כמנגנון להעברת נתונים – כך שכל מכשיר שיכול ליישם את ההיבטים האלה של התקן יכול לשמש כקורא, גם אפליקציה לנייד. מכיוון שהתקן פתוח, יש כמה הטמעות של צד שלישי שזמינות בשוק. בנוסף, אפשר להטמיע את הפונקציונליות ישירות לפי הצורך.
לקבלת הנחיות להטמעת הפונקציונליות בעצמכם, תוכלו להיעזר באפליקציה שלנו לקריאת קובצי עזר בקוד פתוח ל-Android, שמטמיעה את תקן ה-ISO ויכולה לקבל מסמכי mDL מ-Google Wallet.
כדי להתחיל, אפשר ליצור ולהריץ את האפליקציה לקריאת מסמכי עזרה:
- שכפול של המאגר של אפליקציות העזר
- פותחים את הפרויקט ב-Android Studio.
- יוצרים ומפעילים את היעד
appverifier
במכשיר Android או במהדמ.
טוענים לקורא אישורי IACA כדי לוודא שהתעודות המזוהות אותנטיות
כדי לאמת פרטי כניסה אמיתיים, נדרשת תעודה מזהה בארנק ממנפיק נתמך. בהמשך מופיעה רשימה של מנפיקים שנתמכים ב-Google Wallet, יחד עם קישורים לאישורים שלהם לאימות.
בדיקת הפתרון
כדי לבדוק את הפתרון שלכם, אתם צריכים ליצור ולהריץ את האפליקציה ל-Android בשביל קובצי עזר בקוד פתוח. כך יוצרים ומפעילים את האפליקציה של בעל ההפניה:
- שכפול של המאגר של אפליקציות העזר
- פותחים את הפרויקט ב-Android Studio.
- יוצרים ומפעילים את היעד
appholder
במכשיר Android או במהדמ.
(אופציונלי) רישום הבקשה ב-Google Wallet
כדי לרשום את האפליקציה שלכם ב-Google Wallet, ממלאים את הטופס הזה.