Firebase Authentication with Identity Platform sürümüne yükselttiyseniz istediğiniz SAML kimlik sağlayıcıyı kullanarak Firebase ile kullanıcılarınızın kimliğini doğrulayabilirsiniz. Bu sayede, kullanıcıların Firebase uygulamanızda oturum açması 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
Kullanıcıların oturumunu SAML kimlik sağlayıcı kullanarak açmak için öncelikle 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 jetonları doğrulamak için kullanılan sertifika.
- Uygulamanızın varlık kimliği: Uygulamanızı (hizmet sağlayıcı) tanımlayan bir URI.
Yukarıdaki bilgilere sahip olduktan sonra Firebase projeniz için SAML'yi oturum açma sağlayıcısı olarak etkinleştirin:
Henüz Firebase Authentication with Identity Platform sürümüne yükseltmediyseniz yükseltin. SAML kimlik doğrulaması yalnızca yükseltilmiş projelerde kullanılabilir.
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.
Bu sağlayıcıya bir ad verin. Oluşturulan sağlayıcı kimliğini not edin:
saml.example-providergibi. Uygulamanıza oturum açma kodu eklerken bu kimliğe ihtiyacınız olur.Kimlik sağlayıcınızın varlık kimliğini, TOA URL'sini ve ortak anahtar sertifikasını belirtin. Ayrıca uygulamanızın (hizmet 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.
Yaptığınız değişiklikleri kaydedin.
Uygulamanızın alanını henüz yetkilendirmediyseniz Firebase konsolunun Kimlik Doğrulama > Ayarlar sayfasındaki izin verilenler listesine ekleyin.
Firebase SDK ile oturum açma akışını yönetme
Firebase JavaScript SDK ile oturum açma akışını işlemek için aşağıdaki adımları uygulayın:
Firebase konsolunda aldığınız sağlayıcı kimliğini kullanarak bir
SAMLAuthProviderörneği oluşturun.Web
import { SAMLAuthProvider } from "firebase/auth"; const provider = new SAMLAuthProvider('saml.example-provider');Web
var provider = new firebase.auth.SAMLAuthProvider('saml.example-provider'); ``
SAML sağlayıcı nesnesini kullanarak Firebase ile kimlik doğrulama.
Kullanıcıyı sağlayıcının oturum açma sayfasına yönlendirebilir veya oturum açma sayfasını pop-up tarayıcı penceresinde açabilirsiniz.
Yönlendirme akışı
signInWithRedirect()numarasını arayarak sağlayıcının oturum açma sayfasına yönlendirin:Web
import { getAuth, signInWithRedirect } from "firebase/auth"; const auth = getAuth(); signInWithRedirect(auth, provider);Web
firebase.auth().signInWithRedirect(provider);Kullanıcı oturum açma işlemini tamamlayıp uygulamanıza döndükten sonra
getRedirectResult()işlevini çağırarak oturum açma sonucunu alabilirsiniz.Web
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
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
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
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ının SAML onayındaki
NameIDözelliğinde sağlanıyorsa içerir:<Subject> <NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress">test@email.com</NameID> </Subject>Yukarıdaki örnekler oturum açma akışlarına odaklanmış olsa da
linkWithRedirect()velinkWithPopup()kullanarak bir SAML sağlayıcıyı mevcut bir kullanıcıya bağlamak vereauthenticateWithRedirect()ilereauthenticateWithPopup()kullanarak kullanıcıyı yeniden kimlik doğrulamak için aynı kalıbı kullanabilirsiniz. Bu kalıp, son oturum açma işlemi gerektiren hassas işlemler için yeni kimlik bilgilerini almak üzere kullanılabilir.