web-dev-qa-db-ja.com

マルチテナントクラウドアプリケーションとユーザー認証情報

私はマルチテナントクラウドアプリケーションを構築していますが、実際にはログインに関する状況を解決するために少し助けが必要です。

私のアプリはウェブスケジューラです。これにより、各顧客は予定を保存する特定の場所を持つことができます。場所は私の顧客(バイヤー)のデータベースです。

各購入者は複数の場所を持つことができるので、場所ごとにデータベースを作成します(1つの場所= 1つのライセンス)。ここまでは問題なく状況を正しく処理できます。

私がやろうとしているのは、各(バイヤー)のログインパネルを作成することです。バイヤーにはオペレーター、秘書、そして彼の顧客もいることに気付きました。そのため、ロケーションデータベースには、このロケーションのすべてのワーカーと顧客のすべての資格情報が格納されます。

最初の問題では、テナントごとにデータベース接続が必要なので、購入者が自分の資格情報をアプリに挿入することを想像してください。

USERNAME: Foo
PASSWORD: bar

このテナントの正しいデータベース接続を回復する必要があります。私の考えは、XMLファイルにアクセストークン(例のライセンス)を挿入することです。したがって、この構造を想像してみてください。

<licenses>
    <license>
        <token>#dfpeFHTd93GHa9x$3d+Asòd3</token>
        <connection>
            <Host>localhost</Host>
            <username>foo</Host>
            <password>foo</password>
            <dbname>appname_buyerid_locationid</dbname>
        </connection>
    </license>
    <license>
        <token>3dòsA+d3$x9aHG39dTHFepfd#</token>
        <connection>
            <Host>localhost</Host>
            <username>foo</Host>
            <password>foo</password>
            <dbname>appname_buyerid_locationid</dbname>
        </connection>
    </license>
</licenses>

ライセンスのリストを確認するには、ユーザーが自分の資格情報をシステムに入力すると、アプリがこのユーザーに関連付けられているdb接続を取得する必要があるため、XMLファイルの各ライセンスを反復処理して、トークンに関連付けられた接続。

このロジックの主な問題はtokenです。これは、このトークンを購入者とその従業員および顧客に割り当てる方法がわからないためです。

したがって、本質的にはrest-apiリクエスト、トレース(この場合はログイン)は、ユーザーの資格情報を持つトークンに関連付ける必要があります。トークンは、場所を認識したライセンスなどです。

このトークンをエンドポイントのどこかに割り当ててバイヤーを認識させる必要がありますが、どこにあるかわからないので、ここで助けが必要です。または、おそらく私よりも優れた別の強力なロジックを持っています。

質問や詳細については、遠慮なく尋ねてください。

ありがとう。

2
AgainMe

正しい顧客を見つけるためにユーザー名のみに依存している場合、ユーザー名はすべての顧客で一意である必要があり、問題が発生する可能性があります。

ログインフォームには、ユーザー名とパスワードに加えて、顧客のプルダウンリストを含めることをお勧めします。 (必要に応じて、その顧客の場所の2番目の選択リストを作成できます)。

顧客を識別する永続的なCookieを保存し、それを使用して次回の訪問時に顧客を事前に選択することができます。

別の方法は、各顧客にカスタムURLを与えることです: https://tomsbakery.scheduler.com/login

1
Mike Kantor