Türkçe
  • saas gelişimi
  • çok kiracılı saas
  • saas mimarisi
  • saas başlangıç kiti

Çok kiracılı bir SaaS uygulaması oluşturun: Tasarımdan uygulamaya eksiksiz bir kılavuz

Güçlü kimlik doğrulama, organizasyon yönetimi ve rol tabanlı erişim kontrolü ile çok kiracılı bir SaaS uygulamasını verimli bir şekilde nasıl oluşturacağınızı birkaç saat içinde öğrenin.

Yijun
Yijun
Developer

Notion, Slack veya Figma gibi uygulamalar nasıl inşa edilir? Bu çok kiracılı SaaS uygulamaları kullanımı kolaymış gibi görünüyor, ancak kendinizi mi inşa ediyorsunuz? Bu farklı bir hikaye.

Bu kadar karmaşık bir şeyi inşa etmeyi ilk düşündüğümde, aklım allak bullak oldu:

  • Kullanıcıların birden fazla oturum açma seçeneğine ihtiyacı var (e-posta, Google, GitHub)
  • Her kullanıcı birden fazla organizasyon oluşturabilir ve bunlara ait olabilir
  • Her organizasyon içinde farklı izin seviyeleri
  • Belirli e-posta alan adları için otomatik katılım gerektiren kurumsal organizasyonlar
  • Hassas işlemler için MFA gereksinimleri
  • ...

"Patron, ürün tasarımı hakkında iki hafta sonra konuşalım. Şu anda çamura saplanmış durumdayım."

Ama gerçekten üzerinde çalışmaya başladığımda, göründüğü kadar göz korkutucu olmadığını buluyorum.

Bu özelliklerin tümüne sahip bir sistemi İKİ SAATİN ALTINDA inşa ettim!

documind-home-page.png

Documind kontrol paneliDocumind organizasyon sayfası

Size böyle bir sistemi baştan sona nasıl tasarlayacağınızı ve uygulayacağınızı göstereceğim - ve 2025 yılında modern araçlar ve doğru mimari yaklaşım ile ne kadar basit olduğunu görünce şaşıracaksınız.

Makalenin sonunda tamamı kaynak kodu mevcut. Dalmaya başlayalım!

Bir AI dokümantasyon SaaS ürünü olan DocuMind ile başlayacağız.

DocuMind, bireysel kullanıcıları, küçük işletmeleri ve işletmeleri desteklemek için çok kiracılı bir model ile tasarlanmış bir AI dokümantasyon SaaS ürünü.

Platform, organizasyonlar içinde otomatik özet oluşturma, önemli noktaların çıkarılması ve akıllı içerik önerileri dahil olmak üzere belgelerin yönetimi için güçlü AI özellikleri sunmaktadır.

SaaS kimlik doğrulama ve yetkilendirme için hangi özelliklere ihtiyaç var?

Öncelikle, gerekli gereksinimleri gözden geçirelim. Hangi özelliklere ihtiyaç duyuyorsunuz?

Çok kiracılı mimari

Çok kiracılı bir mimariyi etkinleştirmek için organizasyon adı verilen bir varlık katmanına ihtiyacınız olacak. Birden fazla çalışma alanına erişebilen tek bir kullanıcı havuzuna sahip olduğunuzu hayal edin. Her bir organizasyon bir çalışma alanını temsil eder ve kullanıcılar, atandıkları rollere göre farklı çalışma alanlarına (organizasyonlar) erişirken tek bir kimlik sürdürür.

multi-tenant-app-architecture.svg

Kimlik doğrulama sağlayıcılarında yaygın olarak kullanılan bir özelliktir. Bir kimlik yönetim sistemindeki bir organizasyon, SaaS uygulamanızın çalışma alanı, proje veya kiracısı ile eşleşir.

organization-examples.png

Üyelik

Bir üye, bir kimliğin organizasyon içerisindeki üyelik durumunu belirtmek için kullanılan geçici bir kavramdır.

Örneğin, Sarah uygulamanıza e-posta adresini kullanarak kaydolur, [email protected]. Farklı çalışma alanlarına ait olabilir. Sarah Çalışma Alanı A'nın bir parçasıysa ancak Çalışma Alanı B'nin bir parçası değilse, Çalışma Alanı A'nın bir üyesi olarak kabul edilir, ancak Çalışma Alanı B'nin üyesi olarak kabul edilmez.

Rol ve izin tasarımı

Çok kiracılı bir mimaride, kullanıcıların kiracı kaynaklarına erişmek için belirli izinlerle rollere ihtiyacı vardır. İzinler, belirli eylemleri tanımlayan ayrıntılı erişim kontrolüdür, read: order veya write: order gibi. Belirli kaynaklarda hangi işlemlerin yapılabileceğini belirlerler.

Roller, çok kiracılı bir ortamda üyelere atanan izinlerdir.

Bu rolleri ve izinleri tanımlamanız, ardından rolleri kullanıcılara atamanız ve bazen otomatik işlemleri içerebilir. Örneğin:

  1. Bir organizasyona katılan kullanıcılar otomatik olarak üye rolünü alır.
  2. Bir çalışma alanı oluşturan ilk kullanıcıya otomatik olarak yönetici rolü atanır.

Kayıt ve giriş akışı

Kullanıcı dostu ve güvenli bir kayıt ve kimlik doğrulama süreci sağlayın, temel oturum açma ve kayıt seçeneklerini içeren:

  1. E-posta ve parola ile oturum açma: E-posta ve parola ile geleneksel oturum açma yöntemi.
  2. Parolasız oturum açma: Kolay ve güvenli erişim için e-posta doğrulama kodlarını kullanın.
  3. Hesap yönetimi: Kullanıcıların e-posta, parola ve diğer bilgilerini güncelleyebileceği bir hesap merkezi.
  4. Sosyal oturum açma: Hızlı oturum açma için Google ve GitHub gibi seçenekler.
  5. Çok Faktörlü Kimlik Doğrulama (MFA): Duo gibi doğrulama uygulamaları aracılığıyla oturum açması sağlayarak güvenliği artırın.

Kiracı oluşturma ve davet

Çok kiracılı bir SaaS uygulamasında, kullanıcı akışı açısından önemli bir fark, kiracı oluşturma ve üye davetlerini destekleme gerekliliğidir. Bu süreç, ürün aktivasyonu ve büyümedeki kilit rolü nedeniyle dikkatli bir planlama ve uygulama gerektirir.

Dikkate almanız gereken birkaç tipik kullanım akışı vardır:

Kullanıcı türüGiriş noktası
Yeni hesapYeni bir kiracı oluşturmak için oturum açma ve kayıt sayfasından girin
Mevcut hesapÜrün içerisinde başka bir kiracı oluşturun
Mevcut hesap yeni bir kiracı daveti aldıOturum açma ve kayıt sayfasından girin
Mevcut hesap yeni bir kiracı daveti aldıDavet e-postaından girin
Yeni hesap yeni bir kiracı daveti aldıOturum açma ve kayıt sayfasından girin
Yeni hesap yeni bir kiracı daveti aldıDavet e-postaından girin

Bu süreç, neredeyse her SaaS uygulamasında karşılaşılan yaygın senaryoları içerir. Bunları ürün ve tasarım ekibinizi ilhamlandırmak için referans olarak kullanın ve ihtiyaç duydukça kendi akışlarınızı oluşturmaktan çekinmeyin.

Yeni bir hesap bir kiracı oluştururMevcut bir kullanıcı başka bir kiracı oluşturur
Mevcut bir kullanıcı oturum açarMevcut bir kullanıcı e-posta aracılığıyla katılır
Yeni bir kullanıcı oturum açarYeni bir kullanıcı e-posta aracılığıyla katılır

Teknik mimari ve sistem tasarımı

Ürün gereksinimlerinin tümünü anladıktan sonra uygulamaya geçelim.

Kimlik doğrulama stratejisi tanımlayın

Kimlik doğrulama korkutucu görünüyor. Kullanıcıların şunlara ihtiyacı var:

  • E-posta ve parola ile kaydolma/giriş yapma
  • Google/Github ile tek tıklamayla oturum açma
  • Parolayı unuttuklarında parolayı sıfırlama
  • Kurumsal müşteriler için ekip genelinde oturum açma
  • ...

Sadece bu temel özellikleri uygulamak haftalar sürebilir.

Ama şimdi, bunların HİÇBİRİNİ kendimiz inşa etmek zorunda değiliz!

Modern kimlik doğrulama sağlayıcıları (bu kez Logto seçeceğim) bizim için tüm bu özellikleri paketledi. Kimlik doğrulama akışı basittir:

Haftalar süren geliştirmeden 15 dakikalık kurulum, Logto tüm karmaşık akışları bizim için hallediyor! Entegrasyon adımlarını daha sonra uygulama bölümünde açıklayacağız. Şimdi DocuMind temel özelliklerini oluşturmaya odaklanabiliriz!

Çok kiracılı mimariyi kurun

Organizasyon sistemi, kullanıcıların birden fazla organizasyon oluşturmasını ve bunlara katılmasını sağlar. Temel ilişkileri anlayalım:

Bu sistemde, her kullanıcı birden fazla organizasyona ait olabilir ve her organizasyonda birden fazla üye bulunabilir.

Çok kiracılı uygulamada erişim kontrolünü etkinleştir

Rol Tabanlı Erişim Kontrolü (RBAC), çok kiracılı SaaS uygulamalarında güvenliği ve ölçeklenebilirliği sağlamak için önemlidir.

Çok kiracılı bir uygulamada, izinler ve rollerin tasarımı genellikle tutarlıdır, çünkü ürün tasarımından kaynaklanır. Örneğin, birden fazla çalışma alanında, genellikle bir yönetici rolü ve bir üye rolü bulunur. Kimlik doğrulama sağlayıcısı olarak Logto, organizasyon seviyesinde rol tabanlı erişim kontrolünü şu şekilde tasarlamıştır:

  1. Birleşik izin tanımları: İzinler, sistem seviyesinde tanımlanır ve tüm organizasyonlar arasında tutarlı ve sürdürülebilir izin yönetimini sağlar
  2. Organizasyon şablonları: Organizasyon başlangıç aşamasını basitleştiren önceden tanımlı rol ve izin kombinasyonları

İzin ilişkisi şu şekildedir:

Her kullanıcının kendi organizasyonu içinde bir rol(e)/rolleri olması gerektiği için, roller ve organizasyonlar arasındaki ilişki, her kullanıcıya atanan rolleri yansıtmalıdır:

Artık organizasyon sistemi ve erişim kontrol sistemi tasarladık, şimdi ürünümüzü oluşturmaya başlayabiliriz!

Teknoloji İstif

Başlangıç dostu, taşınabilir bir istif seçtim:

  1. Önyüz: React (Vue/Angular/Svelte'e kolayca transfer edilebilir)
  2. Arka uç: Express (basit, sezgisel API)

Neden önyüz ve arka ucu ayırıyoruz? Çünkü net bir mimariye sahip, öğrenmesi kolay ve yığınları değiştirmesi basitse. Ve kimlik doğrulama sağlayıcıları için, bir örnek olarak Logto kullanıyorum.

Ve sonraki kılavuzlar için, bu kalıplar: Herhangi bir ön yüz, herhangi bir arka uç ve herhangi bir kimlik doğrulama sistemi ile çalışır.

Uygulamanıza temel kimlik doğrulama akışı ekleyin

Bu, en kolay adımdır. Projemize Logto'yu entegre etmemiz yeterli. Ardından Logto Konsolu'nda kullanıcı giriş/kayıt yöntemlerini ihtiyacımıza göre yapılandırabiliriz.

Logto'yu uygulamanıza yükleyin

İlk olarak, Logto Cloud adresine giriş yapın. Eğer bir hesaba sahip değilseniz, ücretsiz bir hesap oluşturarak kaydolabilirsiniz. Test amaçlı bir Geliştirme Kiracısı oluşturun.

Kiracı Konsolu'nda, sol tarafta "Uygulama" düğmesine tıklayın. Ardından uygulamamızı oluşturmaya başlamak için React'i seçin.

Sayfadaki kılavuzu takip edin. Logto entegrasyonunu yaklaşık 5 dakika içinde tamamlayabilirsiniz!

İşte entegrasyon kodum:

documind-home-page.png

İşte faydalı bir ipucu: Giriş sayfamızda hem Giriş hem de Kayıt düğmeleri bulunur. Kayıt düğmesi Logto'nun kayıt sayfasına doğrudan gider. Bu, Logto'nun ilk ekran özelliği aracılığıyla çalışır. Oturum açma akışının hangi adımını kullanıcıların ilk olarak görmesi gerektiğini belirler.

Ürününüz birçok yeni kullanıcı beklediğinde varsayılan olarak kayıt sayfasını seçebilirsiniz.

Girişe tıkladıktan sonra, Logto giriş sayfasına gideceksiniz. Giriş yaptıktan (veya kaydolduktan) sonra tebrikler! Uygulamanızın ilk kullanıcısı (siz)!

Ve kullanıcı oturumunu kapatmak istediğinizde kullanıcıyı oturumdan çıkarmak için useLogto kancasından signOut işlevini çağırın.

Giriş ve kayıt yöntemlerini özelleştirin

Logto Konsolu'nda, sol menüde "Giriş Deneyimi"ne tıklayın. Ardından "Kayıt ve giriş" sekmesine tıklayın. Bu sayfada, Logto'nun giriş/kayıt yöntemlerini yapılandırma talimatlarına göre ayarlayın.

sign-in-experience-settings.png

Ve giriş akışı şu şekilde görünecektir:

Logto giriş sayfası

Çok faktörlü kimlik doğrulamayı etkinleştirin

Logto ile MFA'yı etkinleştirmek basittir. Logto Konsolu'nda "Çok faktörlü kimlik doğrulaması" düğmesine tıklayın. Ardından çok faktörlü kimlik doğrulama sayfasında etkinleştirin.

mfa ayarları.png

Ve MFA akışı şu şekilde görünecektir:

Mfa doğrulama adımıDoğrulayıcı uygulamasında QR kodu tara

Her şey çok basit! Karmaşık bir kullanıcı kimlik doğrulama sistemini sadece birkaç dakikada kurduk!

Çok kiracılı organizasyon deneyimi ekleme

Şimdi ilk kullanıcımız var! Ancak bu kullanıcı henüz hiçbir organizasyona ait değil ve henüz hiçbir organizasyon oluşturmadık.

Logto, yerleşik çok kiracılığı destekler. Logto'da herhangi sayıda organizasyon oluşturabilirsiniz. Her organizasyonun birden fazla üyesi olabilir.

Her kullanıcı organizasyon bilgilerini Logto'dan alabilir. Bu da çok kiracılığı desteklemeyi sağlar

Bir kullanıcının organizasyon bilgilerini alın

Bir kullanıcının organizasyon bilgilerini Logto'dan almak için şu iki adımı izleyin:

Logto Yapılandırmasında organizasyon bilgilerine erişim beyan edin. Bu, uygun scope ve resources belirleyerek yapılır.

Logto'nun fetchUserInfo metodunu kullanarak kullanıcı bilgilerini, organizasyon bilgileri dahil almak.

Bu adımları tamamladıktan sonra oturumu kapatıp tekrar giriş yapmanız gerekir. Bu, talep edilen kapsam ve kaynağı değiştirdiğimiz için gereklidir.

Şu anda henüz herhangi bir organizasyon oluşturmadınız. Kullanıcı henüz hiçbir organizasyona katılmadı. Gösterge paneli "Henüz herhangi bir organizasyona sahip değilsiniz" gösterecektir.

dashboard-no-orgs.png

Bir sonraki adımda kullanıcılarımız için bir organizasyon oluşturup onları ekleyeceğiz.

Logto sayesinde, karmaşık organizasyon ilişkileri oluşturmak zorunda değiliz. Sadece Logto'da bir organizasyon oluşturup kullanıcıları eklememiz yeterli. Tüm karmaşıklığı Logto halleder. Organizasyonları oluşturmanın iki yolu vardır:

  1. Logto Konsolu aracılığıyla manuel olarak organizasyonlar oluşturmak
  2. Kullanıcıların kendi organizasyonlarını (çalışma alanlarını) oluşturmalarını sağlayan bir SaaS akışı tasarlarken Logto Yönetim API'sini kullanmak.

Logto konsolunda organizasyon oluşturun

Logto Konsolu sol tarafında "Organizasyonlar" menü düğmesine tıklayın. Bir organizasyon oluşturun.

Şimdi ilk organizasyonunuzu oluşturdunuz.

console-organizations.png

Sonra, kullanıcıya bu organizasyona ekleyeceğiz.

Organizasyon detaylar sayfasına gidin. Üyeler sekmesine geçin. "+ Üye ekle" düğmesine tıklayın. Giriş yapmış kullanıcınızı sol listeden seçin. Sağ alt köşedeki "Üyeleri ekle" düğmesine tıklayın. Şimdi kullanıcıyı başarıyla bu organizasyona eklediniz.

console-add-member-to-orgs.png

APP sayfanızı yenileyin. Kullanıcının artık bir organizasyona ait olduğunu göreceksiniz!

dashboard-has-orgs.png

Kendi kendine hizmet organizasyon oluşturma deneyimini uygulayın

Konsolda bir organizasyon oluşturmak yeterli değil. SaaS uygulamanız, son kullanıcıların kendi çalışma alanlarını kolayca oluşturup yönetebilecekleri bir akışa sahip olmalıdır. Bu işlevselliği uygulamak için Logto Yönetim API'sini kullanın.

Talimatlar için, API iletişimini Logto ile kurmak adına Yönetim API'si ile Etkileşim Kurma dökümanlarını inceleyin.

Organizasyon kimlik doğrulama etkileşim akışını anlayın

Organizasyon oluşturma akışını bir örnek olarak ele alalım. İşte organizasyon oluşturma süreci nasıl işler:

Bu akışın iki önemli kimlik doğrulama gereksinimi vardır:

  1. Arka uç hizmet API'sini koruma:
    • Önyüz, Arka Uç Hizmet API'mize erişmek için kimlik doğrulama gerektirir
    • API uç noktaları, kullanıcının Logto Erişim Tokenını doğrulayarak korunur
    • Bu, sadece kimliği doğrulanmış kullanıcıların hizmetlerimize erişebilmesini sağlar
  2. Logto Yönetim API'sine erişim:
    • Arka Uç Hizmeti, Logto Yönetim API'sini güvenli bir şekilde çağırmalıdır
    • Kurulumu için Yönetim API'si ile Etkileşim Kurma kılavuzunu izleyin
    • Makine-makine kimlik doğrulaması kullanarak erişim kimlik bilgilerini alın

Arka uç API'nizi koruyun

Önce, organizasyon oluşturmak için arka uç hizmetimizde bir API uç noktası oluşturalım.

Arka uç hizmet API'miz sadece kimliği doğrulanmış kullanıcılara izin verir. Logto'yu API'mizi korumak için kullanmamız gerekir. Ayrıca mevcut kullanıcının bilgilerini (örneğin, kullanıcı kimliği gibi) bilmemiz de gerekir.

Logto'nun kavramında (ve OAuth 2.0'da), arka uç hizmetimiz bir kaynak sunucusu olarak hareket eder. Kullanıcılar, önyüzden aldıkları Erişim tokenı ile DocuMind kaynak sunucusuna erişirler. Kaynak sunucu, bu tokenı doğrular. Eğer geçerliyse, istedikleri kaynakları sağlar.

Bir API Kaynağı oluşturarak arka uç hizmetimizi temsil edelim.

Logto Konsolu'na gidin.

  1. Sağdaki "API kaynakları" düğmesine tıklayın.
  2. "API kaynağı oluştur" düğmesine tıklayın. Açılır pencerede Express'i seçin.
  3. "DocuMind API" adıyla bir API adı girin. API tanımlayıcı olarak "https://api.documind.com" kullanın.
  4. Oluşturun.

Bu API tanımlayıcı URL'si hakkında endişelenmeyin. Logto'daki API'nize özel bir tanımlayıcıdır. Gerçek arka uç hizmet URL'nizle bağlantılı değildir.

API kaynağınızı kullanmak için bir eğitim göreceksiniz. Bu eğitimi veya aşağıdaki adımları takip edebilirsiniz.

POST /organizations uç noktasını korumak için bir requireAuth ara yazılımcısı oluşturalım.

Bu ara yazılımı kullanmak için bu ortam değişkenlerine ihtiyacımız var:

  • LOGTO_JWKS_URL
  • LOGTO_ISSUER

Bu değişkenleri Logto kiracınızın OpenID Konfigürasyon uç noktasından alın. https://<your-tenant-id>.logto.app/oidc/.well-known/openid-configuration adresine gidin. Dönülen JSON'da gerekli bilgileri bulacaksınız:

Şimdi POST /organizations uç noktasında requireAuth ara yazılımını kullanın.

Bu, POST /organizations uç noktamızı korumaktadır. Sadece geçerli Logto erişim tokenına sahip kullanıcılar erişebilir.

Şimdi token'ı önyüzümüzde Logto'dan alabiliriz. Kullanıcılar, bu token ile arka uç hizmetimiz aracılığıyla organizasyonlar oluşturabilir. Ara yazılım ayrıca kullanıcı kimliğini de sağlar. Bu, kullanıcıları organizasyonlara eklerken yardımcı olur.

Ön kodda, bu API kaynağını Logto yapılandırmasında belirtin. Tanıtıcısını kaynaklar dizisine ekleyin.

Daha önce olduğu gibi, Logto yapılandırmasını güncelledikten sonra kullanıcıların tekrar oturum açması gerekir.

Dashboard'da, bir organizasyon oluştururken Logto Erişim Tokenını alın. Bu tokenı kullanarak arka uç hizmet API'mize erişin.

Şimdi DocuMind arka uç hizmet API'mize doğru bir şekilde erişebiliriz.

Logto Yönetim API'sini arayın

Logto Yönetim API'sini kullanarak organizasyon oluşturmayı hayata geçirelim.

Önyüzden arka uç hizmetine yapılan istekler gibi, arka uç hizmetinden Logto'ya yapılan istekler de Erişim tokenlarına ihtiyaç duyar.

Logto'da, erişim tokenları için Makine-makine kimlik doğrulaması kullanıyoruz. Bakınız: Yönetim API'si ile Etkileşim Kurma.

Logto Konsolu'nda uygulamalar sayfasına gidin. Makine-makine bir uygulama oluşturun. "Logto Yönetim API erişimi" rolünü atayın. Token uç noktasını, Uygulama ID'sini ve Uygulama Şifresini kopyalayın. Bu kimlik bilgilerini Erişim tokenları için kullanacağız.

m2m-application.png

Bu M2M uygulaması aracılığıyla artık Logto Yönetim API erişim tokenlarını alabiliriz.

Bu erişim tokenını kullanarak Logto Yönetim API'sini arayın.

Bu Yönetim API'lerini kullanacağız:

Logto Yönetim API aracılığıyla organizasyon oluşturmayı hayata geçirdik. Ayrıca kullanıcıları organizasyonlara ekleyebiliriz.

Bu özelliği Dashboard'da test edelim.

dashboard-create-org.png

ve "Organizasyon Oluştur"a tıklayın

dashboard-has-orgs.png

Oluşturma başarılı!

Bir sonraki adımda organizasyona kullanıcı davet etmek olacaktır. Bu özelliği henüz tutorialımızda uygulamayacağız. Yönetim API'sini nasıl kullanacağınızı zaten biliyorsunuz. Bu Kiracı oluşturma ve davet blog gönderisini ürün tasarım referansı olarak inceleyebilir ve bu yazı aracılığıyla kolayca bu özelliği uygulayabilirsiniz: Kendi uygulamanızda kullanıcı işbirliğini nasıl hayata geçireceğiz.

Çok kiracılı uygulamanıza erişim kontrolünü uygulayın

Şimdi organizasyon erişim kontrolüne geçelim.

Başarmak istediğimiz şeyler:

  • Kullanıcılar yalnızca kendi organizasyonlarına ait kaynaklara erişebilir: Bu, Logto'nun organizasyon tokenı aracılığıyla yapılabilir
  • Kullanıcılar organizasyonlar içinde belirli rollere sahip (farklı izinler içeren) yetkili işlemleri gerçekleştirmek için rollere sahip: Bu, Logto'nun organizasyon şablonu özelliği aracılığıyla hayata geçirilebilir

İşte bu özellikleri nasıl hayata geçireceğimiz:

Logto organizasyon tokenı kullanmak

Daha önce bahsettiğimiz Logto erişim tokenına benzer şekilde, Logto belirli bir kaynağa karşılık gelen bir erişim tokenı çıkarır ve kullanıcılar bu tokenı kullanarak arka uç hizmetindeki korunan kaynaklara erişirler. Benzer şekilde Logto, belirli bir organizasyona karşılık gelen bir organizasyon tokenı çıkarır ve kullanıcılar bu tokenı kullanarak arka uç hizmetindeki korunan organizasyon kaynaklarına erişirler.

Ön uygulamada, Logto'nun getOrganizationToken metodunu kullanarak belirli bir organizasyon için bir token elde edebiliriz.

Bu organizationId, kullanıcının ait olduğu organizasyonun id'sidir.

getOrganization veya herhangi bir organizasyon özelliklerini kullanmadan önce Logto yapılandırmasında urn:logto:scope:organizations kapsamının ve urn:logto:resource:organizations kaynağının dahil olduğundan emin olmamız gerekir. Daha önce bunları beyan ettiğimiz için tekrar etmeyeceğiz.

Örgüt sayfamızda, organizasyondaki belgeleri almak için organizasyon tokenını kullanırız.

Bu uygulamada dikkat edilmesi gereken iki önemli nokta şunlar:

  1. getOrganizationToken'a verilen organizationId geçerli kullanıcının ait olduğu bir organizasyon id'si değilse, bu yöntem bir token elde edemez; bu da kullanıcıların yalnızca kendi organizasyonlarına erişmesini sağlar.
  2. Organizasyon kaynakları talep edildiğinde erişim tokenı yerine organizasyon tokenını kullanıyoruz çünkü organizasyonlara ait kaynaklarda, kullanıcı izin kontrolü yerine organizasyon izin kontrolü kullanmak istiyoruz (bunu daha iyi anlamanız için sonraki adımda GET /documents API'sini uygularken daha iyi anlayacaksınız).

Son olarak, arka uç hizmetimizde bir GET /documents API oluşturalım. POST /organizations API'sini korumak için API kaynağını nasıl kullandığımızı hatırlayın. Özel bir organizasyon kaynak göstergesi kullanarak GET /documents API'sini de koruyabiliriz.

İlk olarak, Organizasyon kaynaklarını korumak için bir requireOrganizationAccess ara yazılımı oluşturalım.

Sonra GET /documents API'sini requireOrganizationAccess ara yazılımıyla koruyun.

Bu yolla, organizasyon tokenlarını kullanarak organizasyon kaynaklarına erişmeyi hayata geçirdik. Arka uç hizmetinde veritabanından organizasyon id'sine göre kaynakları alabilirsiniz.

Bazı yazılımlar organizasyonlar arasında veri izolasyonu gerektirir. Daha fazla tartışma ve uygulama için blog gönderisini inceleyebilirsiniz: PostgreSQL ile Çok kiracılı uygulama: Basit bir gerçek dünya örneği aracılığıyla öğrenin.

Organizasyon seviyesinde rol tabanlı erişim kontrol tasarımını hayata geçirin

Organizasyon kaynaklarına organizasyon tokenlarını kullanarak erişilmeyi hayata geçirdik. Şimdi de RBAC kullanarak organizasyonlar içinde kullanıcı izin kontrolünü hayata geçireceğiz.

DocuMind'in iki rolü olduğunu varsayalım: Yönetici ve Ortak Çalışan.

Yöneticiler belgeler oluşturabilir ve erişebilirken, Ortak Çalışanlar sadece belgeleri görebilir.

Bu nedenle, Organizasyonun bu iki role ihtiyacı vardır: Yönetici ve Ortak Çalışan.

Yönetici hem read:documents hem de create:documents izinlerini taşırken, Ortak Çalışan yalnızca read:documents iznine sahiptir.

  • Yönetici
    • read:documents
    • create:documents
  • Ortak Çalışan
    • read:documents

Bu, Logto'nun organizasyon şablonu özelliğinin devreye girdiği yerdir.

Bir organizasyon şablonu, her bir organizasyon için erişim kontrol modelinin bir taslağıdır: tüm organizasyonlar için geçerli olan rolleri ve izinleri tanımlar.

Neden organizasyon şablonu?

Çünkü ölçeklenebilirlik, SaaS ürünleri için en önemli gereksinimlerden biridir. Başka bir deyişle, bir müşteri için çalışan şey tüm müşteriler için çalışmalıdır.

Logto Konsolu > Organizasyon Şablonları > Organizasyon izinlerine giderek read:documents ve create:documents olmak üzere iki izin oluşturun.

org-template-permission.png

Ardından organizasyon roller sekmesine giderek iki kullanıcı rolü oluşturun: Yönetici ve Ortak Çalışan ve bu rollere uygun izinler atayın.

organization-details.png

Bu şekilde, her organizasyon için bir RBAC izin modeli oluşturduk.

Daha sonra, üyelerimize uygun rolleri atamak için Organizasyon detayları sayfasına gidin.

org-template-role.png

Şimdi organizasyon kullanıcılarımız rollere sahip! Bu adımları Logto Yönetim API'si aracılığıyla gerçekleştirebilirsiniz:

Şimdi kullanıcı izin kontrolünü, izinlerini kontrol ederek hayata geçirebiliriz.

Kodumuzda, kullanıcı organizasyon tokenını izin bilgisi taşır hale getirmemiz ve ardından arka uçta bu izinleri doğrulamamız gerekecek.

Önkodun Logto yapılandırmasında, kullanıcıların organizasyon içinde talep etmesi gereken izinleri beyan etmemiz gerekiyor. read:documents ve create:documents izinlerini scopes dizinine ekleyelim.

Her zamanki gibi, kullanıcıyla oturum açmadan çıktığınızdan emin olun, böylece bu konfigürasyonlar etkili olsun.

Sonra backend'in requireOrganizationAccess middleware'inde, kullanıcı izinlerini doğrulamak için bir kontrol ekliyoruz.

Sonra bir POST /documents API oluşturun ve requireOrganizationAccess middleware'i, gerekli kapsam kurulumunu kullanarak bu API'yi ve önceki GET /documents API'sini korumak için kullanın.

Böylece, kullanıcı izinlerini kontrol ederek kullanıcı izin kontrolünü hayata geçirdik.

Önyüzde, organizasyon tokenını çözerek veya Logto'nun getOrganizationTokenClaims metodunu kullanarak kullanıcı izin bilgilerini edinebilirsiniz.

Kullanıcı izinlerini kontrol ederek sayfa öğelerini kontrol edin.

Çok kiracılı uygulama özelliklerini ekleyin

Şimdiye kadar, çok kiracılı SaaS sisteminde temel kullanıcı ve organizasyon özelliklerini hayata geçirdik! Ancak, her organizasyon için giriş sayfası markasını özelleştirme, belirli alan e-postalarıyla otomatik olarak kullanıcı ekleme ve kurumsal seviyede SSO işlevleri gibi bazı özelliklere henüz dikkat etmedik.

Tüm bunlar kutudan çıkan özelliklerdir ve bu özellikler hakkında daha fazla bilgiyi Logto dökümanlarında bulabilirsiniz.

Özet

Başlangıçta ne kadar bunaltıcı geldiğini hatırlayın mı? Kullanıcılar, organizasyonlar, izinler, kurumsal özellikler... Bu tırmanılacak sonsuz bir dağ gibi görünüyordu.

Ama ne başardığımıza bakın:

  • Birden fazla oturum açma seçeneği ve MFA desteği ile eksiksiz bir kimlik doğrulama sistemi
  • Birden fazla üyeliği destekleyen esnek bir organizasyon sistemi
  • Organizasyonlar içinde rol tabanlı erişim kontrolü

Ve en iyi yanı? Yeniden icat etmeye gerek duymadık. Logto gibi modern araçlarla, aylar sürebilecek geliştirmeleri saatler içinde dönüştürdük.

Bu eğitici kaynağın tamamı: Multi-tenant SaaS Sample adresinde bulunabilir.

2025'te modern geliştirmenin gücü budur - altyapı ile mücadele etmek yerine eşsiz ürün özellikleri geliştirmeye odaklanabiliriz. Şimdi sıra sende, harika bir şey yarat!

Logto'nun tüm özelliklerini keşfedin, Logto Cloud'dan Logto OSS'ye kadar Logto web sitesinde veya bugünden kaydolun: Logto cloud.