Identity Platform ile Firebase Authentication'a yükseltme yaptıysanız tercih ettiğiniz RFC Connect (OIDC) uyumlu sağlayıcıyı kullanarak Firebase ile kullanıcılarınızın kimliklerini doğrulayabilirsiniz. Bu sayede, Firebase tarafından yerel olarak desteklenmeyen kimlik sağlayıcıları kullanabilirsiniz.
Başlamadan önce
OIDC sağlayıcısı kullanarak kullanıcıların oturumunu açmak için önce sağlayıcıdan bazı bilgiler toplamanız gerekir:
İstemci kimliği: Uygulamanızı tanımlayan, sağlayıcıya özgü bir dizedir. Sağlayıcınız, desteklediğiniz her platform için size farklı bir istemci kimliği atayabilir. Bu, sağlayıcınız tarafından verilen kimlik jetonlarındaki
aud
hak talebinin değerlerinden biridir.İstemci gizli anahtarı: Sağlayıcının, bir istemci kimliğinin sahipliğini onaylamak için kullandığı gizli dize. Her istemci kimliği için eşleşen bir istemci gizli anahtarı gerekir. (Bu değer yalnızca kesinlikle önerilen yetkilendirme kodu akışını kullanıyorsanız gereklidir.)
Düzenleyen: Sağlayıcınızı tanımlayan bir dize. Bu değer,
/.well-known/openid-configuration
ile eklendiğinde sağlayıcının OIDC keşif dokümanının konumu olan bir URL olmalıdır. Örneğin, kartı veren kuruluşhttps://auth.example.com
ise keşif belgesihttps://auth.example.com/.well-known/openid-configuration
adresinde bulunabilir.
Yukarıdaki bilgileri edindikten sonra, Firebase projeniz için oturum açma sağlayıcısı olarak COPPA Connect'i etkinleştirin:
Kimlik Platformu ile Firebase Authentication'a yükseltme yapmadıysanız yapın. COPPA Connect kimlik doğrulaması yalnızca yeni sürüme geçirilen projelerde kullanılabilir.
Firebase konsolunun Oturum açma sağlayıcıları sayfasında, Yeni sağlayıcı ekle'yi ve ardından RFC Connect'i tıklayın.
Yetkilendirme kodu akışını mı yoksa örtülü izin akışını mı kullanacağınızı seçin.
Sağlayıcınız destekliyorsa her zaman kod akışını kullanmalısınız. Örtülü akış daha az güvenlidir ve kullanılması kesinlikle önerilmez.
Bu sağlayıcıya bir ad verin. Oluşturulan sağlayıcı kimliğini not edin:
oidc.example-provider
. Uygulamanıza oturum açma kodu eklerken bu kimliğe ihtiyacınız olacaktır.İstemci kimliğinizi, istemci gizli anahtarınızı ve sağlayıcınızın veren dizesini 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.
Oturum açma akışını Firebase SDK'sı ile yönetme
OIDC sağlayıcınızı kullanarak Firebase ile kullanıcılarınızın kimliklerini doğrulamanın en kolay yolu, oturum açma akışının tamamını Firebase SDK'sı ile yönetmektir.
Oturum açma akışını Firebase JavaScript SDK ile yönetmek için aşağıdaki adımları izleyin:
Firebase konsolunda aldığınız sağlayıcı kimliğini kullanarak bir
OAuthProvider
örneği oluşturun.Web
import { OAuthProvider } from "firebase/auth"; const provider = new OAuthProvider('oidc.example-provider');
Web
var provider = new firebase.auth.OAuthProvider('oidc.example-provider');
İsteğe bağlı: OAuth isteğiyle birlikte göndermek istediğiniz ek özel OAuth parametrelerini belirtin.
Web
provider.setCustomParameters({ // Target specific email with login hint. login_hint: 'user@example.com' });
Web
provider.setCustomParameters({ // Target specific email with login hint. login_hint: 'user@example.com' });
Desteklediği parametreler için sağlayıcınızla iletişime geçin. Firebase için gerekli parametreleri
setCustomParameters
ile iletemeyeceğinizi unutmayın. Bu parametrelerclient_id
,response_type
,redirect_uri
,state
,scope
veresponse_mode
şeklindedir.İsteğe bağlı: Kimlik doğrulama sağlayıcısından istemek istediğiniz temel profilin ötesinde ek OAuth 2.0 kapsamları belirtin.
Web
provider.addScope('mail.read'); provider.addScope('calendars.read');
Web
provider.addScope('mail.read'); provider.addScope('calendars.read');
Desteklediği kapsamlar için sağlayıcınızla iletişime geçin.
OAuth 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
import { getAuth, signInWithRedirect } from "firebase/auth"; const auth = getAuth(); signInWithRedirect(auth, provider);
Web
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
import { getAuth, getRedirectResult, OAuthProvider } from "firebase/auth"; const auth = getAuth(); getRedirectResult(auth) .then((result) => { // User is signed in. // IdP data available in result.additionalUserInfo.profile. // Get the OAuth access token and ID Token const credential = OAuthProvider.credentialFromResult(result); const accessToken = credential.accessToken; const idToken = credential.idToken; }) .catch((error) => { // Handle error. });
Web
firebase.auth().getRedirectResult() .then((result) => { // IdP data available in result.additionalUserInfo.profile. // ... /** @type {firebase.auth.OAuthCredential} */ var credential = result.credential; // OAuth access and id tokens can also be retrieved: var accessToken = credential.accessToken; var idToken = credential.idToken; }) .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. // IdP data available using getAdditionalUserInfo(result) // Get the OAuth access token and ID Token const credential = OAuthProvider.credentialFromResult(result); const accessToken = credential.accessToken; const idToken = credential.idToken; }) .catch((error) => { // Handle error. });
Web
firebase.auth().signInWithPopup(provider) .then((result) => { // IdP data available in result.additionalUserInfo.profile. // ... /** @type {firebase.auth.OAuthCredential} */ var credential = result.credential; // OAuth access and id tokens can also be retrieved: var accessToken = credential.accessToken; var idToken = credential.idToken; }) .catch((error) => { // Handle error. });
Yukarıdaki örneklerde oturum açma akışlarına odaklanılsa da aynı modeli kullanarak bir OIDC sağlayıcısını mevcut bir kullanıcıya
linkWithRedirect()
velinkWithPopup()
ile bağlayabilir ve kullanıcının kimliğinireauthenticateWithRedirect()
vereauthenticateWithPopup()
ile yeniden doğrulayabilirsiniz. Bu yöntemler, yakın zamanda giriş yapılmasını gerektiren hassas işlemler için yeni kimlik bilgileri almak amacıyla kullanılabilir.
Oturum açma akışını manuel olarak yönetme
Uygulamanızda COPPA Connect oturum açma akışını zaten uyguladıysanız Firebase ile kimlik doğrulamak için doğrudan kimlik jetonunu kullanabilirsiniz:
Web
import { getAuth, signInWithCredential, OAuthProvider } from "firebase/auth";
const provider = new OAuthProvider("oidc.example-provider");
const credential = provider.credential({
idToken: idToken,
});
signInWithCredential(getAuth(), credential)
.then((result) => {
// User is signed in.
// IdP data available in result.additionalUserInfo.profile.
// Get the OAuth access token and ID Token
const credential = OAuthProvider.credentialFromResult(result);
const accessToken = credential.accessToken;
const idToken = credential.idToken;
})
.catch((error) => {
// Handle error.
});
Web
const provider = new OAuthProvider("oidc.example-provider");
const credential = provider.credential({
idToken: idToken,
});
firebase.auth().signInWithCredential(credential)
.then((result) => {
// User is signed in.
// IdP data available in result.additionalUserInfo.profile.
// Get the OAuth access token and ID Token
const credential = OAuthProvider.credentialFromResult(result);
const accessToken = credential.accessToken;
const idToken = credential.idToken;
})
.catch((error) => {
// Handle error.
});