3


1

マルチテナントユーザーモデル

複数の組織とアプリケーションをホストするマルチテナントシステムで、組織がシステムでホストされる複数のアプリケーションを使用する場合、ユーザーとロールモデルは、単一のユーザーまたはロールが複数のアプリケーションと組織にまたがって存在できるようにすべきですか? または、ユーザーエンティティを単一の組織/アプリケーションのペアに制限し、それらのユーザーエンティティを結び付けるための包括的なモデルを定義する必要がありますか?

あれは:

  • ジョン・ドーは人です

  • 彼はApplicationAとApplicationBを使いたい

  • 彼は2つの異なる会社で働いています(私と一緒に耐えてください)。 OrganizationAおよびOrganizationB

ユーザーモデルは次のとおりです。

  1. johndoe @ someuniquesuffixは彼の一意のユーザー名です。 これは彼に与えます 両方の組織の両方のアプリケーションへのアクセス。

  2. johndoe @ applicationa @ organizationaは、ApplicationAのユーザー名です。 組織A. johndoe @ applicationb @ organizationaは、OrganizationAのApplicationBのユーザー名です…​ OrganizationBのユーザー名も同じです。 次に、アプリ/組織の4つのユーザーアカウントすべてが同じ実際の「人」に対応していることを示す「マスター」リストを作成します。

上記と同じシナリオが、ロールスキーマの設計方法に適用されます。

ご協力ありがとうございます!

2 Answer


3


IMO、資格情報の各セットを組織に制限する必要があります。 さらに、組織内のユーザーが各アプリケーションで実行できることを制限するために、各アプリケーションの機能を有効にする必要があります。 つまり、各アプリケーションは独自の承認ロールを管理する必要があります。 ジョーが組織Aを離れるが、組織Bで働き続けるシナリオを処理するための手段が必要です。


2


個人的には、John Doeが組織Aと組織Bの両方で働く1人の人物であるということを追跡することは、ほとんどの場合に多くの価値を加えることなく、物事を大幅に複雑化すると思います。 AのJohn DoeがBのJohn Doeと「同じ」であることをモデルで理解する明確なビジネス上の理由がない限り、私はそれを避けます。 すべての組織でユーザーデータベースを維持し、組織間で一意の名前を処理する必要がある(「John Doeが既に存在するということはどういうことですか? それは私ではありません! ')とUIモデルを持っている(例えば。 ログイン時にユーザーに「今日、Aのデータを処理しますか、それともBのデータを処理しますか?」

私の推奨事項の1つの欠点は、OpenIDやOAuthなどのサードパーティの認証システムを使用する場合、複数のテナントを持つ人が異なるIDでログインする必要があることです。 Eg. GoogleのopenIdでログインするとAのデータにアクセスしますが、Bで作業するにはTwitterアカウントを使用する必要があります。これは、Google IDがすでにAのみに関連付けられているためです。