你真的需要多租戶來管理你的身份系統嗎?
「租戶」的概念對大多數用戶來說相對陌生,但在構建身份模型時尤為重要。在本文中,我們將通過一些例子來幫助大家了解什麼樣的身份模型適合你的業務。
隨著今天低代碼工具和雲服務的日益成熟,再加上 AI 工具化的加速,開發應用程式的門檻被大大降低,市場上出現了越來越多的應用程式。
無論是複雜還是簡單的應用程式,大多數應用程式都涉及用戶註冊和登入場景,讓用戶能夠獲得更穩定、安全和定制化的服務。要解決用戶登入和註冊問題,第一步就是建立一個身份系統。
對於許多面向消費者的應用程式,他們的身份模型通常相對簡單,甚至僅需電子郵件和密碼。對於處於快速增長階段並吸引新用戶的應用程式來說,這已經足夠;但一旦應用程式有了自己的業務模式,最簡單的例子,例如服務廣告,就需要區分普通用戶賬戶和廣告主賬戶。廣告主賬戶可以定制廣告投放範圍、內容等;而普通用戶只能瀏覽一些免費內容和廣告等。
Logto 是一個基於雲的身份解決方案,並且還有一個開源軟體(OSS)解決方案,與雲服務有相同的核心,供有特殊需求的用戶進行定制。Logto 的服務建立在一個多租戶系統之上,每個 Logto 用戶創建自己的賬號,並可以在該賬號內管理多個租戶。其他各種身份雲服務也有類似的架構,每個不同的雲服務對「租戶」都有自己的定義,因此我們在本文中討論的租戶模型限於 Logto 的場景,對於其他供應商可能會有其他對應的概念。
值得注意的是,在 Logto 的多租戶模型中,租戶之間的數據(終端用戶的所有信息)是隔離的,因此 Logto 用戶可以根據自己的業務需求在一個 Logto 賬號中管理終端用戶賬號數據。許多其他身份雲服務只能支持每個賬號擁有一個租戶,這使得需要同時管理多個租戶的用戶需要頻繁切換賬 號,導致體驗不佳。
說了這麼多,那麼你應該如何選擇適合你的應用程式的賬號模型呢?這裡我們看三個案例。
Case 1: 應用程式直接向終端用戶提供服務
這種類型的應用程式的身份模型非常簡單。讓我們以音樂串流應用程式為例 —— 除了管理員(Logto 的用戶“foo”,在這種情況下是租戶擁有者,天生具有管理員訪問權限),只有終端用戶。
在這種情況下,終端用戶可以分為三種類型:
- 免費計劃用戶:只能播放免費音樂
- 付費計劃用戶:可以播放免費音樂並可以創建自己的播放列表
- 高級用戶:除了播放免費音樂和創建播放列表外,還可以播放 HiFi 音樂
在上述應用場景中,我們只需要三種類型的角色(免費、付費、高級),每個角色賦予不同的權限。因此,在終端用戶登入後,Logto 可以根據他們擁有的角色來決定是否為其提供某些特定服務(例如訪問 HiFi 音樂)。此時,我們只需要一個單一租戶來滿足需求。
Case 2: 電子商務平台應用程式
一個連接第三方服務提供商和終端用戶的平台,這也是現在非常常見的 2C 業務模型。需要考慮兩個用戶群體 - 使用電子商務應用程 式作為例子,即商家(服務提供商)和買家(終端用戶)。
在這裡,有兩種方式可以構建身份模型:
- 將買家和商家用戶群體放在同一個租戶下。
- 將買家和商家分別放入兩個不同的租戶中。
為了讓例子更易於理解,我們假設買家可以下訂單或查看產品描述;商家可以更改產品價格、更改產品描述以及查看產品庫存。商家查看產品描述以幫助他們發現問題並及時更新產品信息。
對於身份模型1,只有一個應用程式。所有註冊的用戶成為買家。如果有人需要出售商品,他們可以添加自己的產品以供銷售,這樣的終端用戶將獲得商家權限,除了買家權限外,還能管理自己的產品。
對於身份模型2,由於每個租戶都有自己獨特的身份信息和自己的授權門戶,每個租戶都需要擁有自己的應用程式。在示例案例中,將有一個買家應用程式和一個商家應用程式。買家賬戶無法成為商家,商家賬戶也無法成為買家。如果商家希望像模型1一樣從買家的角度查看自己的產品描述,他們需要在商家應用程式中重新實現相同的功能,或者註冊一個買家應用程式賬號來查看。這增加了許多複雜性,但其優點是買家和商家身份完全隔離。
如果商家有許多不同的產品需要管理,使用身份模型2和開發一個更專業的商家應用程式應該是一個更好的選擇。模型1更適合像 eBay 這樣的平台,商家沒有 許多產品,也不需要過於複雜的產品管理功能。
Case 3: IT 諮詢公司製作的應用程式
假設有一家 IT 技術諮詢公司,其客戶無法自行開發 IT 系統,因此需要從這家公司尋求技術服務。
假設公司有兩個客戶,一個是書店的內部書籍管理系統,另一個客戶是酒店的預訂系統。
從書店老闆的角度來看,我顯然不希望酒店客人能夠隨意登入我的書籍管理系統,因為這將非常不安全。因此,從保護隱私的角度來看,必須為每個客戶設置一個單獨的租戶,利用租戶信息隔離機制,確保客戶的數據對其他客戶是不可見的。
如前所述,即使你有創建多個租戶的需求,Logto 可以幫助你在一個賬號內管理多個租戶,這相比於一些需要你自己創建和管理多個賬號的服務更方便和安全。
通過以上展示的例子,你一定已經找出什麼時候你絕對需要創建多個租戶,在什麼場合使用單一租戶或多租戶都可以,根據你的業務需求選擇適合你的身份模型解決方案。
Logto 團隊旨在確保「是否應創建多個租戶」這個問題不會成為任何業務的阻攔。如果你不確定你的業務場景是否可以使用單一租戶來實現,請加入 Logto 社區進行諮詢。你的問題也可能是其他人的問題,因此歡迎你與我們分享你遇到的挑戰,以幫助提高 Logto 產品的可擴展性。
如果你正在為你的應用程式選擇身份框架,Logto 值得一試。它提供了一個即開即用的解決方 案,適用於從小型企業到大型應用的各種業務場景!