0

マルチテナント SQL データベースにアクセスする顧客のサーバーで実行される EXE アプリを構築する必要があります。

Web アプリで使用するテーブルごとに、列 SubscriberId を使用して、SubscriberId に属するレコードのみにユーザーを制限します。これは (サーバー上で) 完全に正常に機能します。

Exchange の連絡先と予定を SQL テーブルに同期する、サーバー上で実行される Exchange to SQL サービスがあります。問題は、顧客がサーバー上のデータにアクセスするための Exchange 'ApplicationImpersonation' ロールを付与する必要があることです。これは、顧客の Exchange データベース ストア全体にアクセスできることを意味します。

ほとんどの顧客は、そのアクセス レベルを喜んで許可してくれますが、一部の顧客は、そのレベルのアクセスを望んでいません。それは理解できます。

私たちの同期アプリは C# .NET コンソール アプリであり、エンド ユーザーがサーバーにアプリをインストールして、サーバーとリモートで同期できるように調整したいと考えています。

質問: SQL Server 2008R2 で、WHERE SubscriberId = 201 (たとえば) でフィルタリングされたそのユーザーの行にのみアクセスできるユーザーを作成することは可能ですか?

サーバーへのポート 1433 アクセスを許可し、App.config の接続文字列でユーザー/パスワードを使用します。

その場合、Windows exe アプリで管理パネルを作成して、その SQL ユーザー/パスワードと Exchange スーパーユーザーをセットアップできます。その後、リモートで同期できますが、SQL データベース内の自分のレコードのみが表示されます。

それ以外の場合は、API と別のセキュリティ スキームを使用するようにアプリを作り直す必要があるようです。それは明らかにもっと多くの作業になります:-(

ありがとう、チャールズ

4

1 に答える 1

0

私見、次の解決策を提案できます。1. 構成を介して、またはコンソール アプリの起動時にテナントを識別するために使用できる一意のトークンを作成します。2. 各テナントは、トークンを使用して認証することにより、サービスを呼び出します。3. 有効なテナントのみがサービスを呼び出すことができます。Rest は、そのような試みを通知される場合があります。4. より安全にするために、更新トークンを使用するようにサービスと Web サービスを設定することもできます。

于 2014-03-28T13:19:52.460 に答える