Logto'da RBAC'i Anlama: Kapsamlı Bir Gerçek Dünya Örneği
Bu makale, bir online kitapçı örneğini kullanarak anahtar kullanıcı rollerini, kapsamları ve Logto'nun RBAC özelliklerini frontend ve backend uygulamalarında daha iyi güvenlik ve erişim kontrolü için
asıl entegre edeceğinizi keşfedeceğimiz Logto'da Rol Tabanlı Erişim Kontrolünü (RBAC) anlama konusunda kapsamlı bir rehber sunar.
Erişim kontrolü ve güvenlik, kullanıcıların kaynaklara uygun erişimi olduğundan emin olmak için modern uygulamaların vazgeçilmez yönleridir. Logto'nun Rol Tabanlı Erişim Kontrolü (RBAC), geliştiricilere uygulamalarındaki erişim kontrolünü ve güvenliği yönetme konusunda verimli bir yol sunar. Bu makalede, bir gerçek dünya örneği kullanarak Logto'nun RBAC uygulamasının güçlü özelliklerini keşfedeceğiz, size bu kavramları anlama ve projelerinize uygulama konusunda yardımcı olacağız.
Hem frontend hem de backend kod parçalarını inceleyerek, Logto'nun RBAC'ini uygulama yığınına
asıl entegre edeceğiniz hakkında kapsamlı bir bakış açısı kazanacaksınız. Bu makalenin sonunda, projenizin güvenliğini ve erişim kontrolünü artırmak için Logto'nun RBAC özelliklerini kullanma konusunda tamamen donanımlı hale geleceksiniz.
BookHarber'ı Tanıtma: Online bir kitapçı kullanım durumu#
Logto'nun RBAC özelliklerini etkin bir şekilde göstermek için, gerçek bir dünya örneği kullanacağız: BookHarber, bir online kitapçı. BookHarber, müşterilere ve personel için geniş bir özellik yelpazesi sunarak sorunsuz ve güvenli bir alışveriş deneyimi sağlar.
BookHarber'ın anahtar özellikleri şunlardır:
Kitapları Göz Atma ve Satın Alma: Kullanıcılar, çeşitli türler ve yazarları kapsayan çeşitli bir koleksiyondan kitap arayabilir ve satın alabilirler.
Sipariş Yönetimi ve Lojistik İzleme: Kayıtlı müşteriler, siparişlerini yönetebilir, kargoyu izleyebilir ve satın almaları hakkında güncellemeler alabilirler.
Özel Teklifler ve Tatil Etkinlikleri: BookHarber, müşteri tabanını katılıma teşvik etmek ve ödüllendirmek için özel etkinlikler ve tatiller boyunca özel indirimler ve promosyonlar sunar.
Müşteri Hizmetleri: Müşteriler, karşılaştıkları her türlü sorun veya sorunu çözmek için destek talebi açabilirler, BookHarber personeli tarafından hızlı yardım alabilirler.
Müşteri Yönetimi: Farklı rollerdeki personel üyeleri, platformun çeşitli yönlerini yönetme yeteneğine sahiptir, örneğin müşteri hesapları, sipariş işleme ve sorun çözme.
BookHarber ekosistemi içinde, şunlar gibi birkaç anahtar kullanıcı rolünü belirleyebiliriz:
Misafir: Web sitesini göz atabilir, kitap arayabilir ve özel teklifleri görüntüleyebilen kayıtlı olmayan kullanıcılar.
Müşteri: Kitap satın alabilen, siparişleri yönetebilen, lojistiği izleyebilen ve destek talebinde bulunabilen kayıtlı kullanıcılar.
Mağaza Yöneticisi: Platformun genel yönetimi ve operasyonlarından sorumlu personel üyeleri. Tam erişime sahiptirler.
Kitap Yöneticisi: Kitap ve kategori yönetiminden sorumlu personel üyeleri.
Müşteri Hizmetleri Temsilcisi: Destek taleplerine yanıt verme görevi olan personel üyeleri.
Üçüncü taraf Lojistik Sağlayıcısı: Siparişlerin gönderimi ve teslimatını yönetmek ve takip etmek için sorumlu dış ortaklar.
Pazarlama Personeli: BookHarber'ı tanıtmak için sorumlu olan personel üyeleri, özel tekliflerin ve etkinliklerin yönetiminden sorumludurlar.
BookHarber REST API'ları için kapsamları tasarlama#
Logto'nun RBAC sistemini BookHarber için etkin bir şekilde uygulayabilmek için, çeşitli REST API'lerine karşılık gelen kapsamları tasarlamamız gerekiyor. Kapsamlar, belirli bir rolün her API uç
oktası için erişim düzeyini tanımlayan izinlerdir. Uygun kapsamları her kullanıcı rolüne atayarak, kullanıcıların yalnızca rolüne ait eylemlere ve kaynaklara erişimine olanak sağlarız.
Aşağıdaki REST API'leri için kapsamları tasarlayalım:
Kategoriler API:
create:categories: POST /categories
write:categories: PUT /categories/:id
delete:categories: DELETE /categories/:id
list:categories: GET /categories
Books API:
create:books: POST /books
write:books: PUT /books/:id
delete:books: DELETE /books/:id
list:books: GET /books
read:books: GET /books/:id
Customers API:
list:customers: GET /customers
write:customers: PUT /customers/:id
delete:customers: DELETE /customers/:id
read:customers: GET /customers/:id
Orders API:
create:orders: POST /orders
list:orders: GET /orders
read:orders: GET /orders/:id
write:orders: PUT /orders/:id
Events API:
create:events: POST /events
write:events: PUT /events/:id
list:events: GET /events
delete:events: DELETE /events/:id
Order Tracks API:
read:orderTracks: GET /orders/:id/tracks
create:orderTracks: POST /orders/:id/tracks
write:orderTracks: PUT /orders/:id/tracks/:trackId
Her REST API için uygun kapsamları tanımladığımıza göre, bu kapsamları BookHarber ekosistemi içindeki ilgili kullanıcı rollere atayabiliriz:
Kapsamlar
Misafir
Müşteri
Mağaza Yöneticisi
Kitap Yöneticisi
Müşteri Hizmetleri Temsilcisi
Üçüncü Taraf Lojistik Sağlayıcısı
Pazarlama Personeli
create:categories
✓
✓
write:categories
✓
✓
delete:categories
✓
✓
list:categories
✓
✓
✓
✓
✓
✓
✓
create:books
✓
✓
write:books
✓
✓
delete:books
✓
✓
list:books
✓
✓
✓
✓
✓
✓
✓
read:books
✓
✓
✓
✓
✓
✓
✓
list:customers
✓
✓
write:customers
✓
delete:customers
✓
read:customers
✓
✓
create:orders
✓
✓
✓
✓
✓
✓
list:orders
✓
read:orders
✓
✓
write:orders
✓
create:events
✓
✓
write:events
✓
✓
list:events
✓
✓
✓
✓
✓
✓
✓
delete:events
✓
✓
read:orderTracks
✓
✓
✓
create:orderTracks
✓
✓
write:orderTracks
✓
✓
create:tickets
✓
✓
✓
✓
✓
✓
list:tickets
✓
✓
read:tickets
✓
✓
write:tickets
✓
✓
"list" ve "read" kapsamları arasındaki farkları anlama#
REST API tasarımı ve RBAC bağlamında "list" ve "read" kapsamları arasındaki farkları daha ayrıntılı açıklamak için, bir online kitapçı, BookHarber ile ilgili gerçek dünya örneğini düşünelim.
Diyelim ki BookHarber'ın iki tip kullanıcısı var: müşteriler ve müşteri hizmetleri temsilcileri. Müşteriler sipariş oluşturabilirken, müşteri hizmetleri temsilcileri müşterilere siparişleriyle yardımcı olmakla sorumludur. Bu senaryoda orders API kaynağına "list" ve "read" kapsamları
asıl uygulanır, bir bakalım.
List Scopes: Bir "list" kapsamı, kullanıcının sistemindeki bir dizi varlığa erişimine izin verir. Örnek olarak, list:orders kapsamı, bir kullanıcının tüm mevcut siparişlerin bir listesini almasına olanak sağlar. BookHarber bağlamında, bu kapsam, sistemdeki tüm siparişlere genel bir bakışa ihtiyaç duyan mağaza yöneticileri veya diğer personel üyeleri için yararlı olabilir. Ancak, müşteri hizmetleri temsilcileri, rolünün özgül siparişleriyle bireysel müşterilere yardımcı olması
edeniyle, tüm siparişlerin tam listesine erişebilmemelidir.
Read Scopes: Bir "read" kapsamı, kullanıcıya belirli bir kimlikle tek bir varlığa erişme izni verir. Örneğin, read:orders kapsamı, kullanıcının kimliğiyle belirli bir sipariş hakkında ayrıntılı bilgileri görüntülemesine izin verir. BookHarber'ın durumunda, bu kapsam, belirli bir müşterinin siparişi hakkında bilgiye erişmeye ihtiyaç duyan müşteri hizmetleri temsilcileri için idealdir. Bir müşteri destek talebinde bulunduğunda, müşteri hizmetleri temsilcisi talepte verilen sipariş kimliğini kullanarak o belirli siparişin detaylarına erişebilir ve görüntüleyebilir.
Sahipliği Anlama: Müşterilerin kendi siparişleri için "read" veya "list" kapsamlarına ihtiyaçları#
eden yoktur
Birçok uygulamada, kullanıcıların kendi kaynaklarına, karşılık gelen "read" veya "list" kapsamlarını açıkça vermeden erişim sahibi olması yaygındır. Bu, kullanıcıların bu kaynakların sahibi olarak kabul edilmesi ve doğal olarak onlara erişim sağlaması
edeniyledir. BookHarber örneğimizde, müşteriler sipariş oluşturabilir ancak "read:orders" veya "list:orders" kapsamlarına sahip değillerdir.
Sahiplik kavramı, bir REST API'deki belirli kaynaklar için erişim kontrolünü tanımlama konusunda kritik bir rol oynar. Kullanıcıların her zaman kendi kaynaklarına erişebileceğini kabul ederek, kullanışlı ve güvenli erişim kontrolünü gereksiz izinleri vermeden daha verimli bir şekilde uygulayabiliriz. BookHarber'ın durumunda, bu, müşterilerin ek kapsamlara ihtiyaç duymadan hala siparişlerini görüntüleyebilecekleri ve yönetebilecekleri anlamına gelir.
Bunu
asıl çalıştığına dair bir örnekle göstermek için, GET /orders uç
oktasını düşünelim:
Bir kullanıcının list:orders kapsamı varsa (örneğin, mağaza yöneticileri veya personel üyeleri), sistemdeki tüm siparişleri görebilirler. Bu, onların rolü için gerekli sipariş verilerine genel bir bakış sağlar.
Bir kullanıcının list:orders kapsamı yoksa (örneğin, düzenli müşteriler), sistem yalnızca kullanıcıya ait siparişleri döndürecektir. Bu, müşterilerin gerekli olmayan izinler verilmeden hala sipariş bilgilerine erişebilmesini sağlar.
Bu sahiplik bazlı erişim kontrolünü uygulayarak, API farklı kullanıcı rollerine güvenliği ve özel bir kullanıcı deneyimini koruyarak uygun erişim düzeyi sağlayabilir. BookHarber'ın durumunda, sahiplik modeli, "read:orders" veya "list:orders" kapsamlarına ihtiyaç duymadan müşterilerin sipariş bilgilerine erişmelerine izin verir, erişim kontrol tasarımını basitleştirir ve genel kullanıcı deneyimini geliştirir.
Logto'nun Konsolu'nda yapılandırmayı tamamlamak için şu adımları izleyin:
React için Tek Sayfalık Bir Uygulama (SPA) Oluşturun: React uygulamanız için Logto Konsolu'nda bir SPA kurun.
API Kaynağı Oluşturun: https://api.bookharber.com tanımlayıcısıyla yeni bir API Kaynağı ekleyin.
Kaynak için Kapsamları Tanımlayın: Yeni oluşturulan API Kaynağı altında gerekli kapsamları oluşturun.
Rolleri Oluşturun ve Kapsamları Atayın: Uygulamanız için kullanıcı rollerini tanımlayın ve her role uygun kapsamları atayın.
Kullanıcılara Roller Atayın: Uygulamanızdaki kullanıcılara ilgili rolleri atayın, her kullanıcının (Özellikle personel üyesi) rollerine dayalı olarak doğru izinlere sahip olduğundan emin olun.
Örneğimizdeki proje, BookHarber'da, backend hizmeti için Express ve frontend web sayfası için React kullanıyoruz. Bu bölüm, uygulamamızı güvence altına almak için bu popüler teknolojilere Logto'nun RBAC özelliklerini
asıl entegre edeceğimiz hakkında kısaca bilgi verecektir.
Logto'nun RBAC sistemi, modern uygulamalarda erişim kontrolünü ve güvenliği yönetmek için güçlü bir araçtır. Logto'nun RBAC özelliklerinden yararlanarak, kullanıcıların rollerine göre kaynaklara uygun erişime sahip olmalarını sağlayabilir, hassas veri ve işlevselliği izinsiz erişimden koruyabilirsiniz.
Bu makalede, bir online kitapçı, BookHarber'ın gerçek dünya örneğini inceledik ve kapsamları
asıl tasarlayacağınızı, onları kullanıcı rollerine
asıl atayacağınızı ve Logto'nun RBAC özelliklerini hem uygulama frontendi hem de backendi üzerinde
asıl uygulayacağınızı gösterdik.
Bu kavramları ve teknikleri projelerinize uygulayarak, uygulamalarınızın güvenlik ve erişim kontrolünü güçlendirebilir, sorunsuz ve güvenli bir kullanıcı deneyimi sunabilirsiniz. Bir e-ticaret platformu, bir içerik yönetim sistemi veya rol tabanlı erişim kontrolünü gerektiren başka bir proje üzerinde çalışıyor olun, Logto'nun RBAC sistemi, erişim kontrolü ihtiyaçlarınızı karşılamak için esnek ve verimli bir çözüm sunar.