בדף הזה מוסבר איך לשלב את הקצה הקדמי של האפליקציה עם Cloud Marketplace כדי להעניק ללקוחות חוויה חלקה כשהם עוברים מ-Cloud Marketplace למוצר שלכם.
ברמה גבוהה, אתם צריכים לספק כתובת URL להרשמה כדי לטפל ביצירת חשבונות משתמשים, שמנוהלים במסוף האינטרנט שלכם. צריך גם לספק כתובת URL שדרכה המשתמשים יכולים להתחבר. אפשר גם לשלב כניסה יחידה (SSO).
שימוש בפורטל המפתחים כדי לשלב את קצה קדמי של האפליקציה
כדי לגשת לכל המידע שדרוש לשילוב הקצה הקדמי של האפליקציה עם Cloud Marketplace ממקום אחד, אפשר להשתמש בקטע Frontend integration (שילוב הקצה הקדמי) ב-Producer Portal.
הקישור הישיר ל-Producer Portal הוא:
https://console.cloud.google.com/producer-portal?project=YOUR_PROJECT_ID
כדי לגשת לקטע Frontend integration:
ברשימת המוצרים, לוחצים על שם המוצר.
בדף סקירה כללית של המוצר, עוברים לקטע שילוב טכני ולוחצים על שילוב חזיתי.
הוספת כתובת URL להרשמה
כשמשתמשים רוכשים את המוצר שלכם מ-Cloud Marketplace, אתם צריכים ליצור עבורם חשבון במוצר. כדי לעשות את זה, צריך ליצור דף הרשמה כדי להגדיר ולאשר את חשבונות המשתמשים במערכת. אתם יכולים להגדיר את הדף כדף הרשמה שבו משתמשים נרשמים לחשבון במערכת שלכם, או כדף שמאשר חשבונות באופן אוטומטי.
אחרי שיוצרים את דף ההרשמה, מוסיפים אותו לפורטל היוצרים:
ברשימת המוצרים, לוחצים על שם המוצר.
בדף סקירה כללית של המוצר, עוברים אל הקטע שילוב טכני ולוחצים על שילוב קצה קדמי.
מזינים את כתובת ה-URL של דף ההרשמה בשדה כתובת ה-URL של ההרשמה.
אימות פרטי ההרשמה של המשתמש
אם למשתמש עדיין אין חשבון במערכת שלכם, הוא צריך ללחוץ על הלחצן הרשמה ל-YOUR_COMPANY_NAME ב-Cloud Marketplace. כשלוחצים על הלחצן, Google Cloud נשלחת בקשת HTTP POST לדף ההרשמה, עם טוקן אינטרנט מסוג JSON (JWT) בפרמטר x-gcp-marketplace-token. אסימון ה-JWT מכיל את מזהה חשבון הרכש של המשתמש, שמזהה אותו כמשתמש Google Cloud , ומזהה שעבר טשטוש, שמייצג את מזהה חשבון Google שלו. כדי לקשר את חשבון Google של המשתמש לחשבון שלו במערכת שלכם, אתם צריכים להשתמש גם במזהה חשבון הרכש וגם במזהה המוסתר.
אחרי אימות ה-JWT, דף ההרשמה צריך לשלוח בקשה לאישור החשבון אל Partner Procurement API, כפי שמתואר בשלבים לשילוב עם ה-Backend.
מידע מפורט על מטען ייעודי (payload) של ה-JWT ועל אופן האימות שלו מופיע בקטע אימות ה-JWT בהמשך.
אם זו הפעם הראשונה שאתם עובדים עם JWT, כדאי לעיין במבוא ל-JWT.
הוספת כתובת ה-URL של הכניסה
חובה לציין את כתובת ה-URL של דף הכניסה לאפליקציה.
כדי להזין את כתובת ה-URL של דף ההתחברות לאפליקציה בפורטל של Producer:
ברשימת המוצרים, לוחצים על שם המוצר.
בדף סקירה כללית של המוצר, עוברים אל הקטע שילוב טכני ולוחצים על שילוב חזיתי.
מזינים את כתובת ה-URL של דף הכניסה של האפליקציה בשדה כתובת ה-URL של הכניסה.
(אופציונלי) הפעלת כניסה יחידה (SSO) ללקוחות
כדי להפעיל SSO ב-Producer Portal:
ברשימת המוצרים, לוחצים על שם המוצר.
בדף סקירה כללית של המוצר, עוברים אל הקטע שילוב טכני ולוחצים על שילוב קצה קדמי.
בקטע הפעלת כניסה באמצעות SSO?, בוחרים באפשרות כן.
אימות פרטי הכניסה של הלקוחות באמצעות SSO
כשלקוחות מתחברים לאפליקציה שלכם באמצעות SSO, Google Cloud שולחת בקשהHTTP POST לדף הכניסה של האפליקציה, עם טוקן אינטרנט בפורמט JSON (JWT) באותו פורמט של ה-JWT שנשלח כשמשתמשים נרשמים לאפליקציה בפעם הראשונה.
מידע מפורט על מטען ייעודי (payload) של ה-JWT ועל אופן האימות שלו מופיע בקטע אימות ה-JWT בהמשך.
אימות ה-JWT
חלק מהתהליכים, כמו הרשמה של לקוח חדש או התחברות של לקוח באמצעות כניסה יחידה (SSO), כוללים שליחה של בקשת HTTP POST עם אסימון JWT (JSON Web Token) שאולי תצטרכו לאמת.
בטבלה הבאה מפורטים:
- אירועים שכוללים שליחת בקשת HTTP עם JWT.
- סוג בקשת ה-HTTP שמעורבת.
- האם צריך לאמת את ה-JWT.
| אירוע | סוג בקשת HTTP | נדרש אימות JWT |
|---|---|---|
|
רישום לקוח חדש |
POST |
כן |
|
התחברות של לקוח, ללא SSO |
GET |
לא |
|
התחברות של לקוחות באמצעות SSO |
POST |
כן |
המטען הייעודי (payload) של ה-JWT
המטען הייעודי (payload) של ה-JWT הוא בפורמט הבא:
Header
{ "alg": "RS256", "kid": "KEY_ID" }
כאשר:
- השעה ב
algתמידRS256. -
kidמציין את מזהה המפתח ששימש לאבטחת ה-JWT. משתמשים במזהה המפתח כדי לחפש את המפתח מאובייקט ה-JSON במאפייןissבמטען הייעודי (payload).
מטען ייעודי (payload)
{ "iss": "https://www.googleapis.com/robot/v1/metadata/x509/cloud-commerce-partner@system.gserviceaccount.com", "iat": CURRENT_TIME, "exp": CURRENT_TIME + 5 minutes, "aud": "PARTNER_DOMAIN_NAME", "sub": "PROCUREMENT_ACCOUNT_ID", "google": { "roles": [GCP_ROLE], "user_identity": USER_ID } }
כאשר:
-
subהוא מזהה חשבון Google של המשתמש. צריך להשתמש במזהה הזה כדי לקשר את חשבון Google של המשתמש לחשבון שלו במערכת שלכם. -
issהוא המזהה של השולח של ה-JWT. כתובת ה-URL בissטוענת קישורים למפתח ציבורי של Google. -
expמציין את הזמן שבו יפוג תוקף האסימון, והוא מוגדר ל-5 דקות אחרי שליחת האסימון. -
audהוא הדומיין שבו מתארח המוצר, למשלexample.com.
rolesהוא מערך של מחרוזות שמייצגות את התפקידים של המשתמש. יכול להיות:
account_admin, שמציין שהמשתמש הוא Billing Account Administrator (אדמין של הזמנה) בחשבון לחיוב שדרכו נרכש המוצר, או
project_editor, שמציין שהמשתמש הוא בעל הרשאת עריכה (מנהל הרשאות) בפרויקט שמשויך לחשבון החיוב הזה, אבל לא אדמין לחיוב.
user_identityהוא הפניה המוסתרת של המשתמש, שאפשר להשתמש בה כ-login_hintכדי להתחיל תהליך הסכמה של OAuth 2.0. פרטים נוספים זמינים במאמר בנושא הפעלת כניסה באמצעות חשבון Google עםlogin_hint.
מטען ייעודי (payload) לכמה הזמנות של אותו מוצר
אם הפעלתם אפשרות להזמנת כמה יחידות של אותו מוצר, מטען הייעודי (payload) יכלול אובייקט orders נוסף. הנתונים האלה כוללים את מזהה ההזמנה הייחודי שמתאים למזהה הזכאות של כל הזמנה. חשוב לוודא שדף הכניסה של האפליקציה יכול להגיב לשדה orders החדש הזה.
{ "iss": "https://www.googleapis.com/robot/v1/metadata/x509/cloud-commerce-partner@system.gserviceaccount.com", "iat": CURRENT_TIME, "exp": CURRENT_TIME + 5 minutes, "aud": "PARTNER_DOMAIN_NAME", "sub": "PROCUREMENT_ACCOUNT_ID", "google": { "roles": [GCP_ROLE], "user_identity": USER_ID, "orders": [ORDER_ID1, ORDER_ID2] } }
כאשר:
-
ORDER_IDהיא רשימה של מזהי הזמנות ייחודיים לכל מזהה זכאות, שמציינים את המבצעים השונים על אותו מוצר. השדה הזה זמין רק אם מופעלת האפשרות לבצע כמה הזמנות של אותו מוצר.
מידע נוסף על הפעלת הזמנות מרובות של אותו מוצר זמין במאמר הפעלת הזמנות מרובות של אותו מוצר.
אימות המטען הייעודי (payload)
כשמקבלים את ה-JWT, צריך לאמת את הפרטים הבאים:
מוודאים שהחתימה של ה-JWT משתמשת במפתח ציבורי מ-Google.
בודקים את הצהרת
expכדי לוודא שתוקף ה-JWT לא פג.מוודאים ש
audהדומיין שצוין הוא הדומיין הנכון של המוצר.מוודאים שהתביעה
issהיאhttps://www.googleapis.com/robot/v1/metadata/x509/cloud-commerce-partner@system.gserviceaccount.com.מוודאים שהשדה
subלא ריק.
התחלת כניסה באמצעות חשבון Google עם login_hint
אם אתם רוצים שהמשתמשים יעברו תהליך מתן הסכמה ב-OAuth 2.0 באתר שלכם, אתם יכולים להשתמש בפרטי הזהות ממטען הייעודי (payload) כדי להפעיל את התהליך הזה בחשבון Google שבו הם השתמשו ב-Google Cloud לפני ההפניה האוטומטית. כדי לעשות את זה, צריך לספק את user_identity שמופיע ב-JWT בתור login_hint.
מידע נוסף זמין בתיעוד של Google OAuth 2.0.
אחרי שהמשתמש משלים את הרשאה באמצעות OAuth 2.0 באתר שלכם, אתם צריכים לוודא שהוא המשתמש שציפיתם שישלים את תהליך OAuth. כדי לעשות את זה, משתמשים באסימון הגישה מסוג OAuth 2.0 כדי לקרוא ל-Google UserInfo API ולאחזר את פרטי המשתמש הבסיסיים. הפונקציה מחזירה מזהה שאמור להיות זהה לערך של השדה user_identity מ-JWT.
יצירת חשבונות שירות עבור הלקוחות
אם המוצר שלכם דורש חשבון שירות, תוכלו לעבוד עם מהנדס שותף כדי:
- הקצאת חשבונות שירות ללקוחות, ו
- מגדירים דף לניהול חשבונות שירות כדי שהלקוחות יוכלו להעניק לחשבונות השירות את התפקידים הנדרשים בניהול זהויות והרשאות גישה (IAM).
אתם צריכים לספק ללקוחות את הקישור לדף הזה של חשבון השירות, בדרך כלל דרך מסוף הניהול של המוצר.
הקצאת חשבונות שירות
כדי להקצות את חשבונות השירות, צריך לפנות למהנדס השותף ולכלול את הפרטים הבאים:
שם השירות: מזהה מוצר ייחודי שמבדיל את המוצר שלכם ממוצרים אחרים. מומלץ להשתמש בשם השירות שיצרתם כשהוספתם את המוצר.
מזהה הפרויקט: המזהה של הפרויקט שבו אתם יוצרים את חשבונות השירות שמקבלים גישה למשאבים של הלקוחות. צריך ליצור את כל חשבונות השירות שהמוצר משתמש בהם בתוך פרויקט אחד.
תפקידים ב-IAM וההסבר: התפקידים ב-IAM שנדרשים לחשבונות השירות, והסיבה לכך שהתפקידים נחוצים. המידע הזה משותף עם הלקוח ויכול להשפיע על ההחלטה שלו אם להעניק גישה לחשבון השירות.
אם רוצים שהלקוח יחזור לאתר אחרי שהוא ייתן גישה לחשבון השירות, צריך לשלוח את שם הדומיין של המסוף למהנדס השותף. אפשר לשלוח כמה שמות דומיינים, כולל תת-דומיינים, כמו staging.example.com.
שילוב של דף ניהול חשבונות השירות במסוף של המוצר
מהנדס השותף יוצר דף לניהול חשבון שירות כדי לאפשר ללקוחות שלכם להעניק גישה לחשבונות השירות. אחר כך מקשרים את הדף מהמסוף.
אחרי שהמהנדס השותף יודיע לכם שהדף לניהול חשבון השירות מוכן, תוכלו להוסיף פרמטרים לכתובת ה-URL ולקשר לדף מהמסוף שלכם.
צריך להוסיף לכתובת ה-URL שני פרמטרים:
service-name: זהו שם השירות שסיפקתם למהנדס השותף.
service-account-email: כתובת האימייל של חשבון השירות שיצרתם עבור הלקוח. לכל לקוח יש חשבון שירות ייחודי.
בדוגמה הבאה מוצגת כתובת URL עם הפרמטרים הנדרשים:
https://console.cloud.google.com/marketplace-saas/service-account/service-name/service-account-email
אפשר להוסיף פרמטרים נוספים בהתאם לצרכים של הלקוחות. לדוגמה:
https://console.cloud.google.com/marketplace-saas/service-account/service-name/service-account-email;single=true;redirect=https%3A%2F%2Fexample.com
הפרמטרים של כתובת ה-URL מציינים שהמוצר שלכם דורש גישה לפרויקט יחיד Google Cloud ושהלקוח יכול לחזור למסוף שלכם.
רשימה של פרמטרים של כתובות URL
זו רשימה של פרמטרים של כתובות URL שאפשר לשלוח לדף הניהול של חשבון השירות:
| פרמטר | תיאור |
|---|---|
service-name | זהו שדה חובה. זהו שם השירות שסיפקתם למהנדס השותף. |
service-account-email | זהו שדה חובה. זו כתובת האימייל של חשבון השירות שיצרתם עבור הלקוח. |
single | אם הערך הוא true, המשמעות היא שהמוצר שלכם דורש גישה לפרויקט יחיד. |
hints=project-id-1 | מגדירים את הפרויקט שאליו רוצים שלחשבון השירות תהיה גישה. כדי להפריד בין הפרויקטים, משתמשים בפסיקים. |
filter=role1 | מגביל את התפקידים שניתנים לחשבון השירות לקבוצת משנה של התפקידים שסיפקתם למהנדס השותף. לא כוללים את roles/ כשמשתמשים במסנן. |
redirect | מספק קישור ללקוח כדי לחזור למסוף הניהול. כדי להשתמש בפרמטר הזה, צריך לרשום את שם הדומיין אצל מהנדס השותפים. |