Web uygulamalarında SAML Kullanarak Kimlik Doğrulama

Firebase Authentication with Identity Platform'a yükselttiyseniz, seçtiğiniz SAML kimlik sağlayıcısını kullanarak kullanıcılarınızın kimliğini Firebase ile doğrulayabilirsiniz. Bu, kullanıcıların Firebase uygulamanızda oturum açması için SAML tabanlı TOA çözümünüzü kullanmanızı mümkün kılar.

Firebase Authentication, yalnızca hizmet sağlayıcı tarafından başlatılan SAML akışını destekler.

Sen başlamadan önce

Bir SAML kimlik sağlayıcı kullanarak kullanıcıların oturumunu açmak için önce sağlayıcıdan bazı bilgiler toplamanız gerekir:

  • Sağlayıcının Varlık Kimliği : Kimlik sağlayıcıyı tanımlayan bir URI.
  • Sağlayıcının SAML TOA URL'si : Kimlik sağlayıcının oturum açma sayfasının URL'si.
  • Sağlayıcının ortak anahtar sertifikası : Kimlik sağlayıcı tarafından imzalanan belirteçleri doğrulamak için kullanılan sertifika.
  • Uygulamanızın Varlık Kimliği : Uygulamanızı tanımlayan bir URI, "servis sağlayıcı".

Yukarıdaki bilgilere sahip olduktan sonra SAML'yi Firebase projeniz için bir oturum açma sağlayıcısı olarak etkinleştirin:

  1. Firebase'i JavaScript projenize ekleyin .

  2. Firebase Authentication with Identity Platform'a yükseltmediyseniz yükseltme yapın. SAML kimlik doğrulaması yalnızca yükseltilmiş projelerde mevcuttur.

  3. Firebase konsolunun Oturum açma sağlayıcıları sayfasında, Yeni sağlayıcı ekle 'yi ve ardından SAML 'yi tıklayın.

  4. Bu sağlayıcıya bir ad verin. Oluşturulan sağlayıcı kimliğine dikkat edin: saml.example-provider gibi bir şey. Uygulamanıza oturum açma kodu eklediğinizde bu kimliğe ihtiyacınız olacak.

  5. Kimlik sağlayıcınızın varlık kimliğini, SSO URL'sini ve ortak anahtar sertifikasını belirtin. Ayrıca uygulamanızın varlık kimliğini (servis sağlayıcı) belirtin. Bu değerler, sağlayıcınızın size atadığı değerlerle tam olarak eşleşmelidir.

  6. Değişikliklerinizi kaydedin.

  7. Uygulamanızın alanını henüz yetkilendirmediyseniz Firebase konsolunun Kimlik Doğrulama > Ayarlar sayfasındaki izin verilenler listesine ekleyin.

Oturum açma akışını Firebase SDK ile yönetin

Firebase JavaScript SDK ile oturum açma akışını yönetmek için şu adımları izleyin:

  1. Firebase konsolunda edindiğiniz sağlayıcı kimliğini kullanarak bir SAMLAuthProvider örneği oluşturun.

    Web modüler API

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

    Web ad alanlı API

    var provider = new firebase.auth.SAMLAuthProvider('saml.example-provider');
    ``
    
  1. SAML sağlayıcı nesnesini kullanarak Firebase ile kimlik doğrulaması yapın.

    Kullanıcıyı sağlayıcının oturum açma sayfasına yönlendirebilir veya oturum açma sayfasını bir açılır tarayıcı penceresinde açabilirsiniz.

    Yönlendirme akışı

    signInWithRedirect() öğesini çağırarak sağlayıcı oturum açma sayfasına yönlendirin:

    Web modüler API

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

    Web ad alanlı API

    firebase.auth().signInWithRedirect(provider);
    

    Kullanıcı oturum açmayı tamamlayıp uygulamanıza döndükten sonra getRedirectResult() çağırarak oturum açma sonucunu alabilirsiniz.

    Web modüler API

    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 ad alanlı API

    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.
      });
    

    Açılır akış

    Web modüler API

    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 ad alanlı API

    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. Yukarıdaki örnekler oturum açma akışlarına odaklanırken, bir SAML sağlayıcısını linkWithRedirect() ve linkWithPopup() kullanarak mevcut bir kullanıcıya bağlamak için aynı modeli kullanabilir ve reauthenticateWithRedirect() ve reauthenticateWithPopup() ile bir kullanıcının kimliğini yeniden doğrulayabilirsiniz. son oturum açmayı gerektiren hassas işlemler için yeni kimlik bilgilerini almak için kullanılabilir.