Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

احراز هویت با استفاده از SAML در برنامه های وب

با مجموعه‌ها، منظم بمانید ذخیره و دسته‌بندی محتوا براساس اولویت‌های شما.

اگر به Firebase Authentication با Identity Platform ارتقا داده اید، می توانید با استفاده از ارائه دهنده هویت SAML انتخابی، کاربران خود را با Firebase احراز هویت کنید. این امکان استفاده از راه حل SSO مبتنی بر SAML را برای ورود کاربران به برنامه Firebase شما فراهم می کند.

احراز هویت Firebase فقط از جریان SAML آغاز شده توسط ارائه دهنده خدمات پشتیبانی می کند.

قبل از اینکه شروع کنی

برای ورود به سیستم کاربران با استفاده از ارائه دهنده هویت SAML، ابتدا باید اطلاعاتی را از ارائه دهنده جمع آوری کنید:

  • شناسه نهاد ارائه دهنده : یک URI که ارائه دهنده هویت را شناسایی می کند.
  • نشانی اینترنتی SAML SSO ارائه‌دهنده : نشانی اینترنتی صفحه ورود به سیستم ارائه‌دهنده هویت.
  • گواهی کلید عمومی ارائه دهنده : گواهی مورد استفاده برای اعتبارسنجی نشانه های امضا شده توسط ارائه دهنده هویت.
  • شناسه نهاد برنامه شما : یک URI که برنامه شما، «ارائه‌دهنده خدمات» را شناسایی می‌کند.

پس از دریافت اطلاعات فوق، SAML را به عنوان ارائه‌دهنده ورود به سیستم برای پروژه Firebase خود فعال کنید:

  1. Firebase را به پروژه جاوا اسکریپت خود اضافه کنید .

  2. اگر با Identity Platform به Firebase Authentication ارتقا نداده اید، این کار را انجام دهید. احراز هویت SAML فقط در پروژه های ارتقا یافته در دسترس است.

  3. در صفحه ارائه دهندگان ورود به سیستم کنسول Firebase، روی افزودن ارائه دهنده جدید کلیک کنید و سپس روی SAML کلیک کنید.

  4. یک نام به این ارائه دهنده بدهید. به شناسه ارائه دهنده تولید شده توجه کنید: چیزی شبیه saml.example-provider . وقتی کد ورود به برنامه را اضافه می‌کنید، به این شناسه نیاز دارید.

  5. شناسه نهاد، نشانی وب SSO و گواهی کلید عمومی ارائه دهنده هویت خود را مشخص کنید. همچنین شناسه نهاد برنامه خود (ارائه دهنده خدمات) را مشخص کنید. این مقادیر باید دقیقاً با مقادیری مطابقت داشته باشند که ارائه دهنده شما به شما اختصاص داده است.

  6. تغییرات خود را ذخیره کنید

  7. اگر قبلاً دامنه برنامه خود را تأیید نکرده‌اید، آن را به فهرست مجاز در صفحه تأیید هویت > تنظیمات کنسول Firebase اضافه کنید.

جریان ورود به سیستم را با Firebase SDK مدیریت کنید

برای مدیریت جریان ورود به سیستم با Firebase JavaScript SDK، این مراحل را دنبال کنید:

  1. با استفاده از شناسه ارائه دهنده ای که در کنسول Firebase دریافت کرده اید، نمونه ای از SAMLAuthProvider ایجاد کنید.

    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. با استفاده از شی ارائه دهنده SAML با Firebase احراز هویت کنید.

    شما می توانید کاربر را به صفحه ورود به سیستم ارائه دهنده هدایت کنید یا صفحه ورود به سیستم را در یک پنجره بازشو مرورگر باز کنید.

    تغییر مسیر جریان

    با فراخوانی 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() و reauthenticateWithPopup() احراز هویت مجدد کنید. که می تواند برای بازیابی اعتبارنامه های جدید برای عملیات حساسی که نیاز به ورود اخیر دارند استفاده شود.