Web uygulamalarında SAML Kullanarak Kimlik Doğrulama
Koleksiyonlar ile düzeninizi koruyun
İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.
Firebase Authentication with Identity Platform sürümüne geçtiyseniz Firebase ile kullanıcılarınızın kimliğini doğrulayabilirsiniz
istediğiniz SAML kimlik sağlayıcıyı kullanabilirsiniz. Bu, müşteri yolculuğunun
SAML tabanlı TOA çözümünüz kullanarak Firebase uygulamanızda oturum açın.
Firebase Authentication yalnızca servis sağlayıcı tarafından başlatılan SAML akışını destekler.
Başlamadan önce
Kullanıcıların SAML kimlik sağlayıcısı kullanarak oturum açmasını sağlamak için öncelikle
sağlayıcıdan gelen bilgiler:
- 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 URL'si
sayfasını ziyaret edin.
- Sağlayıcının ortak anahtar sertifikası: Doğrulama için kullanılan sertifika
kimlik sağlayıcı tarafından imzalanan jetonlar.
- Uygulamanızın Varlık Kimliği: Uygulamanızı, yani "hizmet"i tanımlayan bir URI
sağlayıcı".
Yukarıdaki bilgileri edindikten sonra SAML'yi hesabınızın oturum açma sağlayıcısı olarak etkinleştirin
Firebase projesi:
Firebase'i JavaScript projenize ekleyin.
Henüz Firebase Authentication with Identity Platform yükseltmediyseniz yükseltme yapın. SAML kimlik doğrulaması yalnızca
kullanılabilir.
Oturum açma sağlayıcıları
sayfasında Firebase konsolunuzu, Yeni sağlayıcı ekle düğmesini ve ardından
SAML'yi seçin.
Bu sağlayıcıya bir ad verin. Oluşturulan sağlayıcı kimliğini not edin:
saml.example-provider
gibi bir değerdir. Ekleme işlemi için bu kimliğe ihtiyacınız olacaktır
oturum açma kodunu ekleyin.
Kimlik sağlayıcınızın varlık kimliğini, TOA URL'sini ve ortak anahtarını belirtin
sertifikası. 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.
Yaptığınız değişiklikleri kaydedin.
Uygulamanızın alanını henüz yetkilendirmediyseniz izin verilenler listesine ekleyin
Kimlik Doğrulama > Ayarlar
sayfasını kontrol edin.Firebase
Oturum açma akışını Firebase SDK'sı ile yönetme
Oturum açma akışını Firebase JavaScript SDK ile yönetmek için şu adımları uygulayın:
için şu adımları izleyin:
Aldığınız sağlayıcı kimliğini kullanarak SAMLAuthProvider
örneği oluşturun
Firebase konsolu.
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ğrulayın.
Kullanıcıyı sağlayıcının oturum açma sayfasına yönlendirebilir veya
oturum açma sayfasına gidin.
Yönlendirme akışı
signInWithRedirect()
numaralı telefonu 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 geri döndükten sonra,
oturum açma sonucu getRedirectResult()
çağırılır.
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
nesne, kullanıcının e-posta adresini yalnızca
Kimlik sağlayıcıdan alınan SAML onayının NameID
özelliği:
<Subject>
<NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress">test@email.com</NameID>
</Subject>
Yukarıdaki örneklerde oturum açma akışlarına odaklanılsa da oturum açma akışlarını
bir SAML sağlayıcıyı mevcut bir kullanıcıya bağlamak için kullanılan kalıp
linkWithRedirect()
ve linkWithPopup()
ile birlikte kullanıcının kimliğini yeniden doğrulayın
reauthenticateWithRedirect()
ve reauthenticateWithPopup()
, olabilir.
gereken hassas işlemler için yeni kimlik bilgileri almak üzere kullanılır.
son giriş.
Aksi belirtilmediği sürece bu sayfanın içeriği Creative Commons Atıf 4.0 Lisansı altında ve kod örnekleri Apache 2.0 Lisansı altında lisanslanmıştır. Ayrıntılı bilgi için Google Developers Site Politikaları'na göz atın. Java, Oracle ve/veya satış ortaklarının tescilli ticari markasıdır.
Son güncelleme tarihi: 2025-08-08 UTC.
[null,null,["Son güncelleme tarihi: 2025-08-08 UTC."],[],[],null,["If you've upgraded to Firebase Authentication with Identity Platform, you can authenticate your users with Firebase\nusing the SAML identity provider of your choice. This makes it possible to use\nyour SAML-based SSO solution to sign users in to your Firebase app.\n\nFirebase Authentication supports only the service-provider initiated SAML flow.\n\nBefore you begin\n\nTo sign in users using a SAML identity provider, you must first collect some\ninformation from the provider:\n\n- **The provider's Entity ID**: A URI that identifies the identity provider.\n- **The provider's SAML SSO URL**: The URL of the identity provider's sign-in page.\n- **The provider's public key certificate**: The certificate used to validate tokens signed by the identity provider.\n- **Your app's Entity ID**: A URI that identifies your app, the \"service provider\".\n\nAfter you have the above information, enable SAML as a sign-in provider for your\nFirebase project:\n\n1. [Add Firebase to your JavaScript project](/docs/web/setup).\n\n2. If you haven't upgraded to Firebase Authentication with Identity Platform, do so. SAML authentication is only\n available in upgraded projects.\n\n3. On the [**Sign-in providers**](//console.firebase.google.com/project/_/authentication/providers)\n page of the Firebase console, click **Add new provider** , and then click\n **SAML**.\n\n4. Give a name to this provider. Note the provider ID that's generated:\n something like `saml.example-provider`. You'll need this ID when you add\n sign-in code to your app.\n\n5. Specify your identity provider's entity ID, SSO URL, and public key\n certificate. Also specify the entity ID of your app (the service provider).\n These values must exactly match the values your provider assigned to you.\n\n6. Save your changes.\n\n7. If you haven't already authorized your app's domain, add it to the allow\n list on the [**Authentication \\\u003e Settings**](//console.firebase.google.com/project/_/authentication/settings)\n page of the Firebase console.\n\nHandle the sign-in flow with the Firebase SDK\n\nTo handle the sign-in flow with the Firebase JavaScript SDK, follow these\nsteps:\n\n1. Create an instance of an `SAMLAuthProvider` using the provider ID you got in\n the Firebase console.\n\n Web \n\n import { SAMLAuthProvider } from \"firebase/auth\";\n\n const provider = new SAMLAuthProvider('saml.example-provider');\n\n Web \n\n var provider = new firebase.auth.SAMLAuthProvider('saml.example-provider');\n ``\n\n\u003c!-- --\u003e\n\n1. Authenticate with Firebase using the SAML provider object.\n\n You can either redirect the user to the provider's sign-in page or open the\n sign-in page in a pop-up browser window.\n\n **Redirect flow**\n\n Redirect to the provider sign-in page by calling `signInWithRedirect()`: \n\n Web \n\n import { getAuth, signInWithRedirect } from \"firebase/auth\";\n\n const auth = getAuth();\n signInWithRedirect(auth, provider);\n\n Web \n\n firebase.auth().signInWithRedirect(provider);\n\n After the user completes sign-in and returns to your app, you can obtain the\n sign-in result by calling `getRedirectResult()`. \n\n Web \n\n import { getAuth, getRedirectResult, SAMLAuthProvider } from \"firebase/auth\";\n\n const auth = getAuth();\n getRedirectResult(auth)\n .then((result) =\u003e {\n // User is signed in.\n\n // Provider data available using getAdditionalUserInfo()\n })\n .catch((error) =\u003e {\n // Handle error.\n });\n\n Web \n\n firebase.auth().getRedirectResult()\n .then((result) =\u003e {\n // User is signed in.\n\n // Provider data available in result.additionalUserInfo.profile,\n // or from the user's ID token obtained from result.user.getIdToken()\n // as an object in the firebase.sign_in_attributes custom claim.\n })\n .catch((error) =\u003e {\n // Handle error.\n });\n\n **Pop-up flow**\n\n Web \n\n import { getAuth, signInWithPopup, OAuthProvider } from \"firebase/auth\";\n\n const auth = getAuth();\n signInWithPopup(auth, provider)\n .then((result) =\u003e {\n // User is signed in.\n\n // Provider data available in result.additionalUserInfo.profile,\n // or from the user's ID token obtained from result.user.getIdToken()\n // as an object in the firebase.sign_in_attributes custom claim.\n })\n .catch((error) =\u003e {\n // Handle error.\n });\n\n Web \n\n firebase.auth().signInWithPopup(provider)\n .then((result) =\u003e {\n // User is signed in.\n\n // Provider data available in result.additionalUserInfo.profile,\n // or from the user's ID token obtained from result.user.getIdToken()\n // as an object in the firebase.sign_in_attributes custom claim.\n })\n .catch((error) =\u003e {\n // Handle error.\n });\n\n The ID token and [UserInfo](/docs/reference/js/auth.userinfo#userinfoemail)\n object contains the user's email address only if it is provided in the\n `NameID` attribute of the SAML assertion from the identity provider: \n\n \u003cSubject\u003e\n \u003cNameID Format=\"urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress\"\u003etest@email.com\u003c/NameID\u003e\n \u003c/Subject\u003e\n\n2. While the above examples focus on sign-in flows, you can use the same\n pattern to link a SAML provider to an existing user using\n `linkWithRedirect()` and `linkWithPopup()`, and re-authenticate a user with\n `reauthenticateWithRedirect()` and `reauthenticateWithPopup()`, which can be\n used to retrieve fresh credentials for sensitive operations that require\n recent login."]]