סקירה כללית
פרוטוקול Digital Asset Links ו-API מאפשרים לאפליקציה או לאתר לפרסם הצהרות שניתנות לאימות לגבי אפליקציות או אתרים אחרים. לדוגמה, אתר יכול להצהיר שהוא משויך לאפליקציית Android ספציפית, או שהוא רוצה לשתף פרטי כניסה של משתמשים עם אתר אחר.
אלה כמה שימושים אפשריים ב-Digital Asset Links:
- אתר א' מצהיר שקישורים לאתר שלו צריכים להיפתח באפליקציה ייעודית במכשירים ניידים, אם האפליקציה מותקנת.
- אתר א' מצהיר שהוא יכול לשתף את פרטי הכניסה של המשתמש ב-Chrome עם אתר ב', כדי שהמשתמש לא יצטרך להתחבר לאתר ב' אם הוא מחובר לאתר א'.
- אפליקציה א' מצהירה שהיא יכולה לשתף הגדרות מכשיר, כמו מיקום, עם אתר ב'.
מונחי מפתח
- הגורם העיקרי: הגורם העיקרי הוא האפליקציה או האתר שמצהירים על המדיניות. ב-Digital Asset Links, הגורם העיקרי הוא תמיד האפליקציה או האתר שמארחים את רשימת ההצהרות.
- רשימת הצהרות: ההצהרות כלולות ברשימת הצהרות שמכילה הצהרה אחת או יותר. רשימת ההצהרות היא טקסט גלוי ונגישה לציבור, במיקום שנשלט על ידי הגורם המורשה וקשה לזיוף או לשינוי. זה יכול להיות קובץ עצמאי או חלק מפריט גדול יותר. לדוגמה, באתר אינטרנט, זהו קובץ שלם; באפליקציית Android, זהו קטע במניפסט של האפליקציה. כל אחד יכול לצפות בהצהרות ולאמת אותן באמצעות שיטות לא קנייניות. מידע נוסף זמין במאמר בנושא רשימת ההצהרות.
- הצהרה: הצהרה היא מבנה JSON מוגדר היטב שמורכב מקשר (מה ההצהרה אומרת לעשות, למשל: הפעלת שיתוף פרטי הכניסה) ויעד (האתר או האפליקציה שאליהם מתייחס הקשר). לכן, כל הצהרה היא כמו משפט, שבו הגורם המבצע אומר יחס לגבי היעד.
- צרכן הצהרה: צרכן הצהרה מבקש רשימת הצהרות מגורם ראשי, בודק אם קיימת הצהרה לגבי גורם ראשי נתון, ואם היא קיימת, יכול לבצע את הפעולה שצוינה. מידע נוסף מופיע במאמר בנושא צריכת הצהרות.
דוגמה מהירה לשימוש
הנה דוגמה פשוטה מאוד לאופן שבו האתר www.example.com יכול להשתמש ב-Digital Asset Links כדי לציין שכל הקישורים לכתובות URL באתר הזה צריכים להיפתח באפליקציה ייעודית ולא בדפדפן:
- האתר www.example.com מפרסם רשימת הצהרות בכתובת
https://www.example.com/.well-known/assetlinks.json. זהו השם והמיקום הרשמיים של רשימת הצהרות באתר. רשימות הצהרות בכל מיקום אחר או עם כל שם אחר לא תקפות באתר הזה. בדוגמה
שלנו, רשימת ההצהרות כוללת הצהרה אחת שמעניקה לאפליקציית Android
הרשאה לפתוח קישורים באתר:
רשימת הצהרות תומכת במערך של הצהרות בתוך סימני [ ], אבל קובץ הדוגמה שלנו מכיל רק הצהרה אחת. [{ "relation": ["delegate_permission/common.handle_all_urls"], "target" : { "namespace": "android_app", "package_name": "com.example.app", "sha256_cert_fingerprints": ["hash_of_app_certificate"] } }]
sha256_cert_fingerprints
הן טביעות האצבע בפורמט SHA256 של אישור החתימה של האפליקציה. פרטים נוספים זמינים בתיעוד בנושא קישורים לאפליקציות ל-Android. - אפליקציית Android שמופיעה בהצהרה שלמעלה כוללת מסנן Intent
שמציין את הסכימה, המארח ותבנית הנתיב של כתובות ה-URL שהיא רוצה
לטפל בהן: במקרה הזה, https://www.example.com. מסנן ה-Intent
כולל מאפיין מיוחד
android:autoVerify
, חדש ב-Android M, שמציין שמערכת Android צריכה לאמת את ההצהרה באתר שמתואר במסנן ה-Intent כשהאפליקציה מותקנת. - משתמש מתקין את האפליקציה. מערכת Android רואה את מסנן הכוונות עם המאפיין
autoVerify
ובודקת אם רשימת ההצהרות קיימת באתר שצוין. אם היא קיימת, מערכת Android בודקת אם הקובץ הזה כולל הצהרה שמעניקה לאפליקציה טיפול בקישורים, ומאמתת את האפליקציה מול ההצהרה באמצעות גיבוב של האישור. אם הכול תקין, מערכת Android תעביר את כל הכוונות (intent) של https://www.example.com לאפליקציית example.com. - המשתמש לוחץ על קישור לכתובת https://www.example.com/puppies במכשיר שלו. הקישור הזה יכול להיות בכל מקום: בדפדפן, בהצעה של Google Search Appliance או בכל מקום אחר. Android מעביר את הכוונה לאפליקציית example.com.
- אפליקציית example.com מקבלת את הכוונה ובוחרת לטפל בה, ופותחת את הדף של הגורים באפליקציה. אם מסיבה כלשהי האפליקציה הייתה מסרבת לטפל בקישור, או אם האפליקציה לא הייתה במכשיר, הקישור היה נשלח ל-handler הבא של כוונות ברירת המחדל שתואם לתבנית הכוונה הזו (לרוב הדפדפן).
שיקולים חשובים ומגבלות:
- הפרוטוקול לא מאמת את הגורם שיוצר את ההצהרה, אבל ההצהרה ממוקמת במיקום ספציפי שמשויך לגורם באופן חזק ונמצא בשליטתו.
- הפרוטוקול לא מאמת את יעד ההצהרה, אבל הוא מספק אמצעי למתקשר לאמת את היעד (לדוגמה, הצהרה מזהה יעדים של אפליקציות לנייד באמצעות גיבוב של אישור ושם חבילה).
- הפרוטוקול לא מבצע באופן מובנה פעולות של הצהרות, אלא מאפשר לחשוף הצהרות שאפליקציה צורכת צריכה לאמת ואז להחליט אם ואיך לפעול לפיהן. ב-Android M, השלבים האלה מתבצעים באופן אוטומטי. לדוגמה, אם אתר מעביר טיפול בקישור לאפליקציה ספציפית, מערכת Android בודקת ומאמתת את ההצהרה, מאמתת את אפליקציית היעד ואז מציעה לאפליקציה לטפל בקישור הנתון.
- הפרוטוקול לא מאפשר להצהיר על שני צדדים שלישיים: כלומר, אתר א' יכול להצהיר על אתר ב', אבל אתר א' לא יכול להצהיר על הקשר בין אתר ב' לאתר ג'. עם זאת, אם אתר ב' נותן אמון באתר א', הוא יכול לבדוק את אתר א' כדי לראות אם יש בו הצהרה שמעניקה הרשאה לאתר ג', ולהחליט ליישם אותה.