איך משתפים את פרטי הכניסה בצורה חלקה באפליקציות ובאתרים ל-Android

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

שיטות מומלצות

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

  • טופס כניסה: מפעילים מילוי אוטומטי של פרטי הכניסה.
  • טופס הרשמה: אחסון מאובטח של פרטי כניסה חדשים לשימוש בפלטפורמות שונות.
  • טופס לשינוי הסיסמה: סנכרון עדכוני הסיסמאות בכל הפלטפורמות.
  • טופס לאיפוס סיסמה: מאפשר איפוס סיסמה יחיד לעדכון כל הפלטפורמות.
  • דומיינים של Webview: אפשר להרחיב את שיתוף פרטי הכניסה לדומיינים של Webview באפליקציה שמטפלים בניהול החשבון (טפסים של כניסה, הרשמה, שינוי סיסמה או איפוס סיסמה של המארח).
  • אפליקציות ל-Android

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

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

כשאתם מתכננים אפליקציות ל-Android, מומלץ לשלב את האפליקציה עם Android Credential Manager.

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

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

לכל אפליקציה ל-Android:

לכל אתר:

  • יכולת לפרסם קובץ /.well-known/assetlinks.json בכל דומיין רלוונטי, בהתאם לתחביר של Digital Asset Links‏ (DAL).
  • כל הדומיינים לניהול החשבון (כניסה, הרשמה, שינוי סיסמה או טפסים לאיפוס סיסמה) חייבים להיות נגישים באמצעות HTTPS.

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

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

כדי להצהיר על קשר של שיתוף פרטי כניסה:

  1. יוצרים קובץ assetlinks.json עם הצהרות שמקשרות לאתר ולאפליקציה ל-Android, בהתאם לתחביר של רשימת ההצהרות של DALs:

    [
      {
        "relation":[
          "delegate_permission/common.get_login_creds"
        ],
        "target":{
          "namespace":"web",
          "site":URL
        }
      },
      {
        "relation":[
          "delegate_permission/common.get_login_creds"
        ],
        "target":{
          "namespace":"android_app",
          "package_name":"APP_ID",
          "sha256_cert_fingerprints":[
            "SHA_HEX_VALUE"
          ]
        }
      }
    ]
    

    כאשר URL היא כתובת ה-URL של האתר,‏ APP_ID הוא מזהה האפליקציה ל-Android ו-SHA_HEX_VALUE היא טביעת האצבע מסוג SHA256 של אישור החתימה של האפליקציה ל-Android.

    השדה relation מתאר את הקשר המוצהר. כדי להצהיר שאפליקציות ואתרים משתפים פרטי כניסה, מציינים את היחסים בתור delegate_permission/common.get_login_creds. מידע נוסף על מחרוזות יחס ב-DAL

    השדה target הוא אובייקט שמציין את הנכס שאליו ההצהרה רלוונטית.

    השדות הבאים מזהים אתר:

    namespace

    web

    site

    כתובת ה-URL של האתר, בפורמט https://domain[:optional_port]; לדוגמה, https://www.example.com.

    domain צריך להיות מוגדר במלואו, וצריך להשמיט את optional_port כשמשתמשים ביציאה 443 ל-HTTPS.

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

    תת-דומיינים לא נחשבים כתואם: כלומר, אם מציינים את domain כ-www.example.com, הדומיין www.counter.example.com לא משויך לאפליקציה.

    השדות הבאים מזהים אפליקציה ל-Android:

    מרחב שמות

    android_app

    package_name

    שם החבילה שצוין במניפסט של האפליקציה. לדוגמה, com.example.android

    sha256_cert_fingerprints

    טביעות האצבעות מסוג SHA256 באישור החתימה של האפליקציה.

  2. מארחים את קובץ ה-JSON של Digital Asset Links במיקום הבא בדומיינים של הכניסה: https://DOMAIN[:OPTIONAL_PORT]/.well-known/assetlinks.json, כאשר DOMAIN הוא FQDN, ו-OPTIONAL_PORT צריך להימחק כשמשתמשים ביציאה 443 ל-HTTPS.

  3. כדי להצהיר על השיוך באפליקציה ל-Android, מטמיעים הצהרה בקובץ res/values/strings.xml של האפליקציה ל-Android שמקשרת לרשימה של ההצהרות שיצרתם בשלב 1. מוסיפים אובייקט שמציין את הקבצים assetlinks.json לטעינה. לדוגמה:

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

    מחליפים את DOMAIN ואת OPTIONAL_PORT (חובה להשמיט כשמשתמשים ביציאה 443 ל-HTTPS) – לדוגמה https://www.example.com. צריך להשתמש באסימון בריחה (escape) לכל סימני האפוסטרופיס והמירכאות שבשרשור.

    אפשר גם להוסיף קטע קוד של JSON לקובץ strings.xml כפי שמוצג במסמכי התיעוד של DALs, אבל השימוש בהצהרה include מאפשר לשנות הצהרות בלי לפרסם גרסה חדשה של האפליקציה.

  4. כדי להפנות להצהרה במניפסט, מוסיפים את השורה הבאה לקובץ AndroidManifest.xml של האפליקציה בקטע <application>:

    <meta-data android:name="asset_statements" android:resource="@string/asset_statements"/>
    
  5. פרסום הגרסה החדשה של אפליקציית Android במסוף הפיתוח של Google Play

אחרי ביצוע השלבים האלה, תהיה לכם אפשרות לשתף את פרטי הכניסה בצורה חלקה בין האתר לאפליקציה ל-Android.

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