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ı Firebase uygulamanızda oturum açmak 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

SAML kimlik sağlayıcısı kullanarak kullanıcılarda oturum 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 SSO 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 oturum açma sağlayıcısı olarak etkinleştirin:

  1. JavaScript projenize Firebase ekleyin .

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

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

  4. Bu sağlayıcıya bir ad verin. Oluşturulan sağlayıcı kimliğini not 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 (servis sağlayıcı) varlık kimliğini de 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 adını henüz yetkilendirmediyseniz, onu Firebase konsolunun Kimlik Doğrulama > Ayarlar sayfasındaki izin verilenler listesine ekleyin.

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

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

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

    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 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 bir açılır tarayıcı penceresinde oturum açma sayfasını açabilirsiniz.

    Yönlendirme akışı

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

    Web version 9

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

    Web version 8

    firebase.auth().signInWithRedirect(provider);
    

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

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

    Pop-up akışı

    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. Yukarıdaki örnekler oturum açma akışlarına odaklanırken, linkWithRedirect() ve linkWithPopup() kullanarak bir SAML sağlayıcısını mevcut bir kullanıcıya bağlamak için aynı kalıbı 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.