אימות באמצעות SAML באפליקציות אינטרנט

קל לארגן דפים בעזרת אוספים אפשר לשמור ולסווג תוכן על סמך ההעדפות שלך.

אם שדרגת ל-Firebase Authentication with Identity Platform, תוכל לאמת את המשתמשים שלך באמצעות Firebase באמצעות ספק הזהות SAML לפי בחירתך. זה מאפשר להשתמש בפתרון SSO מבוסס SAML שלך כדי להיכנס משתמשים לאפליקציית Firebase שלך.

אימות Firebase תומך רק בזרימת SAML יזומה של ספק השירות.

לפני שאתה מתחיל

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

  • מזהה הישות של הספק : URI המזהה את ספק הזהות.
  • כתובת ה-SAML SSO של הספק : כתובת האתר של דף הכניסה של ספק הזהות.
  • אישור המפתח הציבורי של הספק : האישור המשמש לאימות אסימונים חתומים על ידי ספק הזהות.
  • מזהה הישות של האפליקציה שלך : URI המזהה את האפליקציה שלך, "ספק השירות".

לאחר שיש לך את המידע שלמעלה, הפעל את SAML כספק כניסה לפרויקט Firebase שלך:

  1. הוסף את Firebase לפרויקט JavaScript שלך .

  2. אם לא שדרגת ל-Firebase Authentication with Identity Platform, עשה זאת. אימות SAML זמין רק בפרויקטים משודרגים.

  3. בדף ספקי כניסה של מסוף Firebase, לחץ על הוסף ספק חדש ולאחר מכן לחץ על SAML .

  4. תן שם לספק זה. שים לב למזהה הספק שנוצר: משהו כמו saml.example-provider . תזדקק למזהה זה כשתוסיף קוד כניסה לאפליקציה שלך.

  5. ציין את מזהה הישות, כתובת ה-SSO ואישור המפתח הציבורי של ספק הזהות שלך. ציין גם את מזהה הישות של האפליקציה שלך (ספק השירות). ערכים אלה חייבים להתאים בדיוק לערכים שהספק שלך הקצה לך.

  6. שמור את השינויים שלך.

  7. אם עדיין לא אישרת את הדומיין של האפליקציה שלך, הוסף אותו לרשימת ההיתרים בדף אימות > הגדרות של מסוף Firebase.

טפל בזרימת הכניסה עם Firebase SDK

כדי לטפל בזרימת הכניסה עם Firebase JavaScript SDK, בצע את השלבים הבאים:

  1. צור מופע של SAMLAuthProvider באמצעות מזהה הספק שקיבלת במסוף Firebase.

    Web version 9

    import { SAMLAuthProvider } from "firebase/auth";
    
    const provider = new SAMLAuthProvider('saml.example-provider');
    

    Web version 8

    var provider = new firebase.auth.SAMLAuthProvider('saml.example-provider');
    ``
    
  1. בצע אימות עם Firebase באמצעות אובייקט ספק SAML.

    אתה יכול להפנות את המשתמש לדף הכניסה של הספק או לפתוח את דף הכניסה בחלון דפדפן מוקפץ.

    הפניית זרימה

    הפנה מחדש לדף הכניסה של הספק על ידי קריאה signInWithRedirect() :

    Web version 9

    import { getAuth, signInWithRedirect } from "firebase/auth";
    
    const auth = getAuth();
    signInWithRedirect(auth, provider);
    

    Web version 8

    firebase.auth().signInWithRedirect(provider);
    

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

    Web version 9

    import { getAuth, getRedirectResult, SAMLAuthProvider } from "firebase/auth";
    
    const auth = getAuth();
    getRedirectResult(auth)
      .then((result) => {
        // User is signed in.
    
        // Provider data available using getAdditionalUserInfo()
      })
      .catch((error) => {
        // Handle error.
      });
    

    Web version 8

    firebase.auth().getRedirectResult()
      .then((result) => {
        // User is signed in.
    
        // Provider data available in result.additionalUserInfo.profile,
        // or from the user's ID token obtained from result.user.getIdToken()
        // as an object in the firebase.sign_in_attributes custom claim.
      })
      .catch((error) => {
        // Handle error.
      });
    

    זרימת פופ אפ

    Web version 9

    import { getAuth, signInWithPopup, OAuthProvider } from "firebase/auth";
    
    const auth = getAuth();
    signInWithPopup(auth, provider)
      .then((result) => {
        // User is signed in.
    
        // Provider data available in result.additionalUserInfo.profile,
        // or from the user's ID token obtained from result.user.getIdToken()
        // as an object in the firebase.sign_in_attributes custom claim.
      })
      .catch((error) => {
        // Handle error.
      });
    

    Web version 8

    firebase.auth().signInWithPopup(provider)
      .then((result) => {
        // User is signed in.
    
        // Provider data available in result.additionalUserInfo.profile,
        // or from the user's ID token obtained from result.user.getIdToken()
        // as an object in the firebase.sign_in_attributes custom claim.
      })
      .catch((error) => {
        // Handle error.
      });
    
  2. בעוד שהדוגמאות לעיל מתמקדות בזרימות כניסה, אתה יכול להשתמש באותה דפוס כדי לקשר ספק SAML למשתמש קיים באמצעות linkWithRedirect() ו- linkWithPopup() , ולאמת משתמש reauthenticateWithRedirect() עם reauthenticateWithRedirect() ו-reauthenticateWithPopup( reauthenticateWithPopup() , אשר ניתן להשתמש בו כדי לאחזר אישורים טריים עבור פעולות רגישות הדורשות כניסה אחרונה.