ケーススタディ: Logto Organizations を使ったマルチテナンシーの構築
Logto Organizations でマルチテナンシーのための堅固でスケーラブルなアイデンティティ基盤を設定する方法を学びましょう。
現在、マルチテナンシーはアプリや SaaS の不可欠な部分となっています。それはしばしばユーザー、組織、役割、権限の間の複雑な関係を伴います。例えば、あるユーザーは複数の組織のメンバーであることができ、逆もまた然りです。また、ユーザーは異なる組織で異なる役割を持つこともできます。
問題
これは初期段階だけでなく、アプリの長期的なメンテナンスにとっても頭痛の種となることがあります。伝統的なロールベースのアクセス制御(RBAC)モデルはこの問題を部分的に解決できますが、ユーザーや組織の数が増えると悪夢のようになります。
例えば、初めは各組織に 2 つの役割、admin
と member
しかないかもしれません。しかし 10 の組織があ れば 20 の役割を管理することになり、1,000 の組織があれば 2,000 の役割を管理することになります。
ビジネスが成長するにつれ、guest
や developer
といった役割を追加する必要があるかもしれません。RBAC モデルの複雑さは指数関数的に増加します。
Logto Cloud を構築したときにも同じ問題がありました。我々はそれが業界共通の問題であり、解決する必要があるとすぐに気付きました。Logto Organizations がこの問題を解決します。
組織テンプレート
簡単な質問があります。なぜ SaaS アプリは SaaS なのでしょうか?拡張性がその最も重要な理由の一つだと私たちは考えています。つまり、あるクライアントに有効なものはすべてのクライアントに有効であるべきです。
これが「組織テンプレート」という概念に繋がります。組織テンプレートは、各組織に適用されるアクセス制御モデルの設計図です。テンプレートは役割と権限を定義し、すべての組織に適用されます。
例えば各組織に次の 2 つの役割があるとします:
admin
: 組織の管理ができる(メンバーの追加/削除、役割の変更など)。member
: 組織のリソースにアクセスし、新しいメンバーを招待できる。
次の構成で組織テンプレートを作成できます:
ユーザーを組織に追加する
組織テンプレートを設定したので、ユーザー管理が簡単かつ自然になります。ユーザーを組織に追加するには Logto Console(ウェブ UI)または Logto Management API を使用できます。
詳細は Configure organizations を参照してください。
次の設定で 2 つの組織を追加しました:
- Organization A: Alice と Bob がメンバーです。Alice は
admin
役割、Bob はmember
役割を持っています。 - Organization B: Alice のみがメンバーで、彼女は
member
役割を持っています。
アプリで組織トークンをリクエストする
現在、顧客アプリでは Logto から組織アクセス トークン(組織トークン)をリクエストできます。組織トークンは JWT トークンであり、ユーザーが組織内で権限を持っているかどうかをあなたのサービスが検証するために必要な情報を含みます。
組織トークンのリクエストの詳細手順については、Integrate Organizations with your app を参照してください。
仮に Alice があなたのアプリにサインインし、Organization A でユーザーを削除したいとします。アプリは "Organization A" の remove:member
権限(スコープ)で組織トークンをリクエストできます。Logto は Alice が組織でその権限を持っているかどうかを確認し、彼女が admin
役割を持っているため組織トークンを返します。
ここにいくつかのエラーケースの例があります:
- Bob が Organization A でユーザーを削除しようとすると、彼は Organization A で
admin
役割を持っていないため、Logto はエラーを返します。 - Alice が Organization B でユーザーを削除しようとすると、彼女は Organization B で
admin
役割を持っていないため、Logto はエラーを返します。 - Bob が Organization B で何らかの権限で組織トークンを取得しようとすると、彼は Organization B でメンバーシップを持っていないため、Logto はエラーを返します。
あなたのアプリが組織トークンを受け取った後、それを Authorization
ヘッダーに追加することでサービスを呼び出せます。
サービスで組織トークンを確認する
あなたのサービスでは、標準の JWT 検証プロセスを利用して組織トークンを確認できます。詳細は Verify organization tokens を参照してください。
組織テンプレートを更新する
例えば developer
と呼ばれる新しい役割を追加する場合などに組織テンプレートを更新する必要があるときは、Logto Console または Logto Management API を使用できます。この変更はすべての組織に自動的に適用され、ダウンタイムが発生しません。
結論
Logto Organizations を使用すると、マルチテナシーの管理とスケーリングが標準化され、快適になります。ビジネスロジックに集中し、アイデンティティとアクセス制御は Logto に任せることができます。