Web uygulamalarında SAML Kullanarak Kimlik Doğrulama

Identity Platform ile Firebase Authentication'a yükseltme yaptıysanız tercih ettiğiniz SAML kimlik sağlayıcısını kullanarak Firebase ile kullanıcılarınızın kimliklerini doğrulayabilirsiniz. Böylece, Firebase uygulamanızda kullanıcıların oturum açmasını sağlamak için SAML tabanlı TOA çözümünüzü kullanabilirsiniz.

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

Başlamadan önce

SAML kimlik sağlayıcısı kullanarak kullanıcıların oturumunu açmak için önce sağlayıcıdan bazı bilgileri 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 jetonları doğrulamak için kullanılan sertifika.
  • Uygulamanızın Varlık Kimliği: Uygulamanızı, yani "servis sağlayıcıyı" tanımlayan bir URI.

Yukarıdaki bilgileri edindikten sonra, Firebase projeniz için oturum açma sağlayıcısı olarak SAML'yi etkinleştirin:

  1. Firebase'i JavaScript projenize ekleyin.

  2. Kimlik Platformu ile Firebase Authentication'a yükseltme yapmadıysanız yapın. SAML kimlik doğrulaması yalnızca yeni sürüme geçirilen projelerde kullanılabilir.

  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ğini not edin: saml.example-provider. Uygulamanıza oturum açma kodu eklerken bu kimliğe ihtiyacınız olacaktır.

  5. Kimlik sağlayıcınızın varlık kimliğini, TOA URL'sini ve ortak anahtar sertifikasını belirtin. 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. Yaptığınız değişiklikleri 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'sı ile yönetme

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

  1. Firebase konsolunda aldığınız 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 alanı API'si

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

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

    Yönlendirme akışı

    signInWithRedirect() numaralı telefonu arayarak sağlayıcının 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 alanı API'si

    firebase.auth().signInWithRedirect(provider);
    

    Kullanıcı oturum açmayı tamamlayıp uygulamanıza geri döndükten sonra, getRedirectResult() numaralı telefonu arayarak 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 alanı API'si

    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 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 alanı API'si

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

    Kimlik jetonu ve UserInfo nesnesi, kullanıcının e-posta adresini yalnızca kimlik sağlayıcıdan alınan SAML onayının NameID özelliğinde sağlanmışsa içerir:

    <Subject>
      <NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress">test@email.com</NameID>
    </Subject>
    
  2. Yukarıdaki örneklerde oturum açma akışlarına odaklanılmıştır. Ancak linkWithRedirect() ve linkWithPopup() kullanarak bir SAML sağlayıcısını mevcut bir kullanıcıya bağlamak ve kullanıcının kimliğini reauthenticateWithRedirect() ve reauthenticateWithPopup() ile yeniden doğrulamak için de aynı yöntemi kullanabilirsiniz. Bu yöntemler, yakın zamanda giriş yapılmasını gerektiren hassas işlemler için yeni kimlik bilgileri almak amacıyla kullanılabilir.