הגדרה של שיתוף מאובטח של פרטי כניסה בין אתרים ואפליקציות Android

1. סקירה כללית

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

פרוטוקול Digital Asset Links (DAL) פותר את הבעיה הזו בכך שהוא מאפשר לכם להצהיר על שיוכים בין האתרים והאפליקציות שלכם. כך מנהלי סיסמאות, כמו מנהל הסיסמאות של Google, יכולים לשתף ביניהם סיסמאות ומפתחות גישה שנשמרו.

בפרט, כדי להגדיר את קובץ Digital Asset Links, צריך להשתמש ביחסים שונים בהתאם למה שרוצים לשתף:

  • לסיסמאות: הכללת delegate_permission/common.get_login_creds מאפשרת למנהלי סיסמאות לשתף סיסמאות שמורות בין האתר והאפליקציה שלכם.
  • למפתחות גישה: מפתחות גישה קשורים באופן הדוק לדומיין אינטרנט ספציפי, ולכן מערכת Android דורשת הוכחת בעלות על הדומיין. לכן, חובה לכלול את delegate_permission/common.handle_all_urls. יכול להיות שאתם מזהים את ההרשאה הזו כהרשאה שמשמשת ל-Android App Links (קישורי עומק), אבל היא גם דרישה מחייבת כדי לאפשר שימוש במפתחות גישה שנוצרו בפלטפורמה אחת בפלטפורמה אחרת.

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

סיסמאות שזמינות בכל הנכסים

הטמעה של שיתוף מאובטח של פרטי כניסה יכולה לשפר משמעותית את חוויית המשתמש. לדוגמה, אחרי הטמעת DAL לשיתוף פרטי כניסה, נרשמה עלייה של 10% בשיעור ההצלחה של הכניסה לחשבון ב-eBay.

ב-Codelab הזה נסביר איך להשתמש ב-Digital Asset Links כדי לאפשר שיתוף של פרטי כניסה בין האתר שלכם לבין אפליקציית Android.

דרישות מוקדמות

מה תלמדו

  • איך מגדירים שיתוף של פרטי כניסה באמצעות Google Play Console (מומלץ).
  • איך יוצרים קובץ assetlinks.json באופן ידני.
  • איך מגדירים אפליקציה ל-Android לשיוך ידני.
  • איך מפעילים מפתחות גישה באפליקציית Android על ידי שיוך שלה לדומיין של אתר.
  • איך משתמשים בכלים כדי ליצור ולאמת את ההגדרה.

הדרישות

  • אתר: אפשרות לארח קובץ JSON בכתובת https://{your-domain}/.well-known/assetlinks.json.
  • אפליקציה ל-Android:
    • בשיטה של Play Console: אפליקציה שפורסמה ב-Google Play.
    • בשיטה הידנית: פרויקט Android שאפשר לשנות ולבנות. שימו לב: כדי שהשיתוף של פרטי הכניסה עם מנהל הסיסמאות של Google יפעל, האפליקציה צריכה להיות מפורסמת ב-Google Play.

איך זה עובד

כדי ששיתוף פרטי הכניסה יפעל, צריך ליצור יחסי אמון דו-כיווניים:

  1. אתר -> אפליקציה: באתר שלכם צריך להיות קובץ assetlinks.json שמצהיר על כך שהאתר נותן אמון באפליקציית Android שלכם.
  2. אפליקציה -> אתר: צריך להגדיר את אפליקציית Android כך שתהיה לה גישה לאתר.

במאמר הזה נסביר על שתי דרכים לעשות זאת: הדרך האוטומטית באמצעות Google Play Console (מומלץ), והדרך הידנית באמצעות Digital Asset Links ישירות.

2. הגדרה באמצעות Google Play Console (מומלץ)

הדרך הכי קלה להפעיל שיתוף של פרטי הכניסה בין האתר שלכם לבין אפליקציית Android היא דרך Google Play Console. השיטה הזו מאפשרת לכם לשייך את האפליקציה לאתר שלכם בלי שתצטרכו לשנות את המניפסט של האפליקציה או לפרסם גרסה חדשה של האפליקציה. Google Play מנהל את השיוך בצד האפליקציה בשבילכם.

דרישות מוקדמות

  • הרשאות ב-Play Console לגישה לדף קישורי עומק.
  • אפשרות לפרסם קובץ /.well-known/assetlinks.json בדומיין.

מידע נוסף על קישורי עומק זמין במאמר בנושא Android App Links.

שלבים

  1. ב-Play Console, עוברים אל צמיחה > קישורי עומק.
  2. אם הדומיין שלכם לא מופיע ברשימה, לוחצים על הוספת דומיין בקטע הגדרת האפליקציה.
  3. מאתרים את הדומיין ואת העמודה שיתוף פרטי כניסה. לוחצים על הפעלה (או מוודאים שהאפשרות הפעלת השיתוף של פרטי הכניסה מופעלת בדומיינים חדשים).
  4. מעתיקים את קטע ה-JSON שנוצר על ידי Play Console.
  5. מפרסמים את תוכן ה-JSON הזה ב-https://{your-domain}/.well-known/assetlinks.json. (אם הקובץ כבר קיים, מוסיפים אליו את ההצהרה החדשה).
  6. חוזרים ל-Play Console ולוחצים על יצירת שיוך לאתר או על הפעלת שיתוף של פרטי כניסה.

מערכת Play Console תאמת עכשיו את הגדרת האירוח.

קישורי עומק ב-Play Console

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

  • כתובת ה-URL נגישה דרך HTTPS.
  • השרת מגיב עם Content-Type: application/json.
  • כתובת ה-URL נגישה ללא הפניות אוטומטיות.

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

3. הגדרה ידנית באמצעות Digital Asset Links

צריכים שליטה רבה יותר? או שאין לך גישה ל-Play Console? אפשר להגדיר שיתוף של פרטי כניסה בין האתר לבין אפליקציית Android באופן ידני. התהליך כולל שני שלבים עיקריים: אירוח קובץ ה-JSON באתר ועדכון קובץ המניפסט של אפליקציית Android.

1. קבלת טביעת אצבע דיגיטלית של האפליקציה

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

לכל אפליקציית Android:

2. יצירת קובץ השיוך

צריך ליצור קובץ assetlinks.json שבו מוצהרים קשרים בין האתר לאפליקציה. משתמשים ב-delegate_permission/common.get_login_creds כדי לתת הרשאה לשיתוף סיסמאות, וב-delegate_permission/common.handle_all_urls כדי להפעיל קישורי עומק ולשתף מפתחות גישה.

יוצרים קובץ בשם assetlinks.json עם התוכן הבא. מחליפים את ערכי הדוגמה בכתובת ה-URL של האתר, בשם החבילה ובטביעת האצבע שלכם:

[{
  "relation": [
    "delegate_permission/common.handle_all_urls",
    "delegate_permission/common.get_login_creds"
    ],
  "target": {
    "namespace": "android_app",
    "package_name": "com.example.app",
    "sha256_cert_fingerprints":
    ["14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5"]
  }
}]

3. אירוח הקובץ

מעלים את קובץ assetlinks.json לספרייה .well-known בשורש הדומיין.

מיקום: https://{your-domain}/.well-known/assetlinks.json

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

  • כתובת ה-URL נגישה דרך HTTPS.
  • השרת מגיב עם Content-Type: application/json.
  • כתובת ה-URL נגישה ללא הפניות אוטומטיות.

צירוף משתמשים לאפליקציה דרך האתר

4. הגדרת האפליקציה ל-Android

עכשיו צריך להגדיר באפליקציית Android שהיא תסמוך על האתר. מוסיפים הפניה במניפסט שמפנה לקובץ משאבים שמכיל את כתובת ה-URL של assetlinks.json.

1. הוספת משאב מחרוזת

ב-res/values/strings.xml, מוסיפים מחרוזת חדשה asset_statements. שימו לב לגרשיים עם התו לביטול המשמעות המיוחדת!

<resources>
    <string name="asset_statements" translatable="false">
      [{
        \"include\": \"https://www.example.com/.well-known/assetlinks.json\"
      }]
    </string>
</resources>

2. הוספת מטא-נתונים למניפסט

ב-AndroidManifest.xml, מוסיפים תג <meta-data> בתוך רכיב <application> שמפנה למשאב המחרוזת הזה:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.app">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme">

        <meta-data
            android:name="asset_statements"
            android:resource="@string/asset_statements" />

        <activity android:name=".MainActivity">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
    </manifest>

אחרי שמבצעים את השלבים האלה ומפרסמים גרסה חדשה של אפליקציית Android, מנהלי סיסמאות שתומכים ב-Digital Asset Links (כמו מנהל הסיסמאות של Google) יוכלו להציע פרטי כניסה שנשמרו עבור www.example.com כשהמשתמש ינסה להיכנס ל-com.example.app, ולהפך.

4. אימות ההגדרה

לפני שאתם מפרסמים את האפליקציה, חשוב מאוד לאמת את ההגדרה של Digital Asset Links. אם קובץ ה-JSON שגוי או שהקבצים לא נגישים, הפעולה תיכשל ללא הודעה.

להשתמש בכלי הרשמי ליצירה ולתיקוף של הצהרות.

מחולל ומאמת הצהרות

  1. מזינים את הדומיין של האתר ואת שם חבילת האפליקציה.
  2. לוחצים על Test Statement (בדיקת דוח תנועות).
  3. הכלי יבדוק אם קובץ assetlinks.json מתארח בצורה נכונה ומכיל את השיוך התקין.

5. שיתוף פרטי כניסה בין כמה אתרים

צירוף משתמשים לאפליקציה דרך האתר

אם יש לכם כמה אתרים שמשתמשים באותה מערכת כניסה (לדוגמה, example.com ו-example.co.uk), אתם יכולים להצהיר שהם קשורים זה לזה כדי שאפשר יהיה לשתף ביניהם את פרטי הכניסה.

שיתוף סיסמאות בין כמה אתרים

כדי לשתף סיסמאות בין אתרים, אפשר להצהיר על שיוך של web ל-web באמצעות delegate_permission/common.get_login_creds.

לדוגמה, כדי ש-example.com יוכל לשתף סיסמאות עם example.co.uk, קובץ assetlinks.json שמתארח ב-https://example.com/.well-known/assetlinks.json צריך לכלול הצהרה שמיועדת ל-example.co.uk:

[{
  "relation": ["delegate_permission/common.get_login_creds"],
  "target": {
    "namespace": "web",
    "site": "https://example.co.uk"
  }
}]

באופן דומה, https://example.co.uk/.well-known/assetlinks.json חייב לכלול הצהרה שמיועדת לexample.com.

שיתוף מפתחות גישה בין כמה אתרים

כדי לאפשר לכמה אתרים לשתף את אותם מפתחות גישה, הם צריכים להשתמש באותו מזהה צד מסתמך (RP ID). ב-WebAuthn ובמפתחות גישה, מזהה ה-RP מציין את ההיקף של פרטי הכניסה לפי שם הדומיין. כשיוצרים מפתח גישה, הוא מקושר למזהה RP ספציפי, ואפשר להשתמש בו רק בדומיינים שנכללים בהיקף של המזהה הזה. הגדרה נכונה של מזהה RP מבטיחה חוויה חלקה של שימוש במפתחות גישה בתתי-דומיינים, במקורות חוצי-אתרים ובאפליקציות לנייד מאינטראקציה ישירה (First-Party). מידע נוסף על הגדרת מזהה RP באמצעות בקשות שקשורות למקור, אתר אחד יכול לציין מקורות אחרים שמורשים להשתמש במזהה RP שלו, וכך לאפשר למשתמשים לעשות שימוש חוזר באותו מפתח גישה בכמה אתרים שאתם מפעילים. שימו לב: זה שונה משיתוף מפתחות גישה בין אתר לבין אפליקציית Android, שמתבצע באמצעות delegate_permission/common.handle_all_urls ב-Digital Asset Links.

לדוגמה, אם רוצים שexample.com ו-example.co.uk ישתפו מפתחות גישה, אפשר להגדיר ש-example.com יהיה מזהה ה-RP הקנוני. כדי שהתהליך הזה יפעל, example.co.uk צריך להשתמש ב-rpId: 'example.com' בקריאות שלו ל-WebAuthn API, ו-example.com צריך לארח קובץ ב-https://example.com/.well-known/webauthn כדי להוסיף את example.co.uk לרשימת ההיתרים:

{
  "origins": [
    "https://example.co.uk"
  ]
}

כך example.co.uk יכולה ליצור מפתחות גישה שמשויכים ל-example.com ולהשתמש בהם.

6. סיכום

מעולה! הגדרתם בהצלחה שיתוף מאובטח של פרטי כניסה.

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

מה השלב הבא?