כניסה של משתמשים באמצעות מיקרוסופט
במאמר הזה מוסבר איך משתמשים ב-Identity Platform כדי לאפשר למשתמשים להיכנס באמצעות Microsoft. יש תמיכה גם בחשבונות Microsoft אישיים וגם בחשבונות Azure Active Directory (Azure AD).
לפני שמתחילים
ההדרכה הזו מיועדת למשתמשים שכבר הפעילו את Identity Platform, ויש להם אפליקציית אינטרנט בסיסית שנכתבה באמצעות HTML ו-JavaScript. במדריך למתחילים מוסבר איך עושים את זה.
הגדרת מיקרוסופט כספק
כדי להגדיר את מיקרוסופט כספק זהויות:
נכנסים לדף Identity Providers במסוף Google Cloud .
לוחצים על הוספת ספק.
בוחרים באפשרות Microsoft מהרשימה.
מזינים את מזהה האפליקציה ואת הסוד של האפליקציה של מיקרוסופט. אם עדיין אין לכם מזהה וסוד, פועלים לפי השלבים במאמר Quickstart: Register an app with the Azure AD v2.0 endpoint כדי לקבל אותם.
נקודת הקצה הזו תומכת גם בחשבונות Microsoft לשימוש אישי וגם בחשבונות Azure AD. מידע נוסף על Azure AD זמין במאמר סקירה כללית על פלטפורמת הזהויות של מיקרוסופט (גרסה 2.0).
מגדירים את ה-URI שמופיע בקטע הגדרה של Microsoft כ-URI תקף להפניה אוטומטית של OAuth באפליקציית Microsoft. אם הגדרתם דומיין בהתאמה אישית ב-Identity Platform, צריך לעדכן את ה-URI להפניה אוטומטית בהגדרות של אפליקציית Microsoft כדי להשתמש בדומיין המותאם אישית במקום בדומיין שמוגדר כברירת מחדל. לדוגמה, שינוי של
https://myproject.firebaseapp.com/__/auth/handlerל-https://auth.myownpersonaldomain.com/__/auth/handler.לוחצים על הוספת דומיין בקטע דומיינים מורשים כדי לרשום את הדומיינים של האפליקציה. למטרות פיתוח,
localhostכבר מופעל כברירת מחדל.בקטע הגדרת האפליקציה, לוחצים על פרטי ההגדרה. מעתיקים את קטע הקוד לקוד של האפליקציה כדי להפעיל את Identity Platform client SDK.
לוחצים על Save.
כניסה של משתמשים באמצעות ה-SDK של הלקוח
יוצרים מופע של אובייקט
OAuthProviderומעבירים אתmicrosoft.comכמזהה הספק:JavaScript
var provider = new firebase.auth.OAuthProvider('microsoft.com');
אופציונלי: מוסיפים היקפי הרשאות של OAuth. ההיקפים מציינים אילו נתונים אתם מבקשים ממיקרוסופט. יכול להיות שנתונים רגישים יותר ידרשו היקפי הרשאה ספציפיים. כדאי לעיין בתיעוד של מיקרוסופט כדי להבין אילו היקפים נדרשים לאפליקציה.
JavaScript
provider.addScope('mail.read'); provider.addScope('calendars.read');אופציונלי: מציינים פרמטרים נוספים של OAuth בהתאמה אישית. ההגדרות האלה ספציפיות ל-Microsoft, ובדרך כלל משמשות להתאמה אישית של חוויית האימות.
JavaScript
provider.setCustomParameters({ // Force re-consent. prompt: 'consent', // Target specific email with login hint. login_hint: 'user@firstadd.onmicrosoft.com' });אפשר להשתמש בפרמטר
mktכדי להתאים אישית את השפה של תהליך האימות. לדוגמה:provider.setCustomParameters({ mkt: 'fr' });אפשר להשתמש במאפיין
tenantכדי להגביל את הגישה למשתמשים מחוץ לדומיין מסוים של Azure AD. מציינים את שם הדומיין הידידותי של הדייר או את מזהה ה-GUID שלו. משתמשים שלא נמצאים בדומיין הזה לא יוכלו להיכנס לחשבון. לדוגמה:provider.setCustomParameters({ // Optional "tenant" parameter in case you are using an Azure AD tenant. // eg. '8eaef023-2b34-4da1-9baa-8bc8c9d6a490' or 'contoso.onmicrosoft.com' // or "common" for tenant-independent tokens. // The default value is "common". tenant: 'TENANT_ID' });במסמכי התיעוד של Microsoft OAuth מופיעה רשימה מלאה של הפרמטרים ש-Microsoft תומכת בהם. שימו לב שאי אפשר להעביר פרמטרים ששמורים על ידי OAuth או Identity Platform.
משתמשים באובייקט
OAuthProviderכדי שהמשתמש ייכנס לחשבון. אפשר לפתוח חלון קופץ או להפנות לדף הנוכחי. ההפניה קלה יותר למשתמשים במכשירים ניידים.כדי להציג חלון קופץ, מתקשרים אל
signInWithPopup():JavaScript
firebase.auth().signInWithPopup(provider) .then((result) => { // IdP data available in result.additionalUserInfo.profile. // ... /** @type {firebase.auth.OAuthCredential} */ var credential = result.credential; // OAuth access and id tokens can also be retrieved: var accessToken = credential.accessToken; var idToken = credential.idToken; }) .catch((error) => { // Handle error. });
כדי להפנות את הדף לכתובת אחרת, קודם קוראים לפונקציה
signInWithRedirect():כדאי לפעול לפי השיטות המומלצות כשמשתמשים ב-
signInWithRedirect, ב-linkWithRedirectאו ב-reauthenticateWithRedirect.JavaScript
firebase.auth().signInWithRedirect(provider);
לאחר מכן, מאחזרים את האסימון של מיקרוסופט על ידי קריאה ל-
getRedirectResult()כשהדף נטען:JavaScript
firebase.auth().getRedirectResult() .then((result) => { // IdP data available in result.additionalUserInfo.profile. // ... /** @type {firebase.auth.OAuthCredential} */ var credential = result.credential; // OAuth access and id tokens can also be retrieved: var accessToken = credential.accessToken; var idToken = credential.idToken; }) .catch((error) => { // Handle error. });
אחרי שיש לכם אסימון גישה, אתם יכולים להשתמש בו כדי להפעיל את Microsoft Graph API. למשל:
REST
curl -i -H "Authorization: Bearer [ACCESS_TOKEN]" https://graph.microsoft.com/v1.0/me
בניגוד לספקי זהויות אחרים שנתמכים על ידי Identity Platform, מיקרוסופט לא מספקת כתובת URL של תמונה של משתמשים. במקום זאת, תצטרכו להשתמש ב-Graph API כדי לבקש את הנתונים הבינאריים של התמונה.
בנוסף לאסימון הגישה, אפשר גם לאחזר אסימון מזהה של משתמש ב-Microsoft.
ההצהרה oid באסימון הזה מכילה מזהה ייחודי של המשתמש. אפשר להשוות את המזהה הזה למזהה שמופיע בכתובת user.providerData[0].uid. אם המשתמשים שלכם נכנסים באמצעות דייר (tenant) Azure AD, השדות האלה יהיו זהים לחלוטין. אם לא, השדה ירופד באפסים (לדוגמה, המזהה המאוחד 4b2eabcdefghijkl יופיע כ-00000000-0000-0000-4b2e-abcdefghijkl).
אל תשתמשו ב-sub כדי להשוות מזהי משתמשים. הצהרת sub ספציפית לאפליקציה,
ולא תהיה זהה למזהה שמשמש את מיקרוסופט.
כניסה ידנית לחשבון של משתמשים
ספקי Identity Platform אחרים, כמו Google, Facebook ו-Twitter, מאפשרים לכם להוסיף משתמשים באופן ידני על ידי קריאה ל-signInWithCredential().
היכולת הזו לא נתמכת ב-Microsoft. ל-Identity Platform אין אפשרות לאמת את קהל היעד של אסימוני גישה ל-OAuth של מיקרוסופט, וזו דרישת אבטחה קריטית.
אם אתם לא יכולים להשתמש ב-Identity Platform Client SDK כדי לאפשר למשתמשים להיכנס לחשבון, תצטרכו להשתמש בספריית OAuth של צד שלישי כדי לבצע אימות באמצעות מיקרוסופט. אחר כך אפשר להשתמש באימות בהתאמה אישית כדי להחליף את פרטי הכניסה של מיקרוסופט באסימון בהתאמה אישית.
המאמרים הבאים
- מידע נוסף על משתמשי Identity Platform
- כניסה של משתמשים באמצעות ספקי זהויות אחרים.