Blog / Geliştirme

Laravel ve Firebase'de Özel Token Kimlik Doğrulaması ile Firestore Verilerinizin Güvenliğini Sağlama

Vedat Kurtay

...

Giriş

Bu yazımızda Laravel ve Firebase'i kullanarak custom-token oluşturacak ve bu token ile kimlik doğrulaması gerçekleştireceğiz.

Başlamadan önce, Firebase Admin SDK for PHP ve istemci için Javascript SDK for client uygulamanızda kurulu olmalıdır.

Senaryo:

Bilindiği gibi, Firestore'da saklanan verilerin güvenliği için kurallar belirlememiz gerekiyor, aksi takdirde verilerimiz doğru bilgilere sahip herkes tarafından erişilebilir olur. Kuralları belirlemek için Firebase'ın kendi kimlik doğrulama sistemini kullanmamız gerekiyor.

Firestore'da sakladığımız veriler için izole bir kimlik doğrulama sistemi oluşturabileceğiz, bunu Laravel'de kullandığımız kimlik doğrulama sistemiyle çakışmadan yapabileceğiz.

Bu durumda custom-token ile kimlik doğrulama işlemleri gerçekleştirmeye çalışacağız.

Kimlik Doğrulama'yı Uygulamamıza Ekleme

Öncelikle, özel token oluşturabilmek için Firebase kimlik doğrulama yardımcısını başlatmamız gerekiyor:

$auth = app('firebase.auth');

Özel Token Oluştur

Firebase Admin SDK, özel tokenlar oluşturmak için bir özellik içerir. Bunu yapmak için, minimum gereksinim olarak Laravel kimlik doğrulama sisteminizde bir kullanıcı kimliği (UID) sağlamanız gerekir. Bu UID herhangi bir dize olabilir, ancak kimlik doğrulaması yapılan kullanıcıyı veya cihazı açıkça ayırt edebilmelidir. Bu belirteçlerin bir saat sonra otomatik olarak sona ereceğini unutmayın.

// Get your authenticated user id with auth helper or Auth::id() facade.
$uid = auth()->id();

$customToken = $auth->createCustomToken($uid);

return $customToken->toString();

Bu kod, firebase uygulamanızda kullanmak için özel belirteç oluşturacaktır.

Özel Token ile Oturum Aç

Artık özel bir tokenımız var olduğuna göre bu tokenı istemci tarafına sunmamız ve Firebase uygulamanıza oturum açmanız gerekiyor.

Bundan önce, Giriş bölümünde belirtildiği gibi Firebase SDK için [Javascript SDK for client] (https://firebase.google.com/docs/web/setup) yüklemeniz gerektiğini unutmayın.

import { getAuth, signInWithCustomToken } from "firebase/auth";

const yourSignInWithCustomTokenFunction = async () => {
  try {
    // get your custom token from backend.
    const { data } = await generateFirebaseSignInToken();
    const customToken = data.generateFirebaseSignInToken;

    const auth = getAuth();
    const userCredential = await signInWithCustomToken(auth, customToken);

 	// Signed in
    const user = userCredential.user;

  } catch (error) {
    console.error("Error:", error);
  }
};

// call yourSignInWithCustomTokenFunction anywhere you want in your app.
yourSignInWithCustomTokenFunction();

Firestore'a Kurallar Bütünü Ekleme

Şimdi ise ilgili Firestore'a kurallar eklemeye hazırız. Aşağıdaki kuralları ekleyerek verilerimizin herkese açık olmasını veya açıkça okunabilmesini engellemiş olduk. Örnek olarak:

rules_version = '2';

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
       	allow read: if request.auth != null;
      	allow write: if false;
    }
  }
}

Artık Firebase Cloud'da (Kimlik Doğrulama) bu belirteci kullanarak oturum açan kullanıcıyı kontrol edebilirsiniz.

“Yazmak, geleceği görmektir.” Paul Valéry