0

Asp.net MVC 4.0 と LocalDB を使用して、フォーム認証 (実際には新しい単一ページ アプリケーションを使用しています) Web サイトを構築しています。データベースにアクセスするサービス層用に別のクラス lib プロジェクトを作成したいと考えています。また、デフォルトのアカウント/認証テーブルを独自のテーブルと統合する必要があります。

質問:

  1. SQL サーバーの LocalDB ファイルをサービス プロジェクト フォルダーに配置する必要がありますか?
  2. 答えが (1) でない場合、サービス プロジェクトは MVC プロジェクトの LocalDB ファイルにどのようにアクセスできますか?
  3. LocalDB ファイルをサービス プロジェクトに配置した場合、アカウント ログイン用のシステム生成コードを変更する必要がありますか。デフォルトの DBContext ではなく、サービス層を介して認証コードがデータベースにアクセスできるようにしてはどうでしょうか。

4

1 に答える 1

2

このパターンは非常に一般的であり、主な制御と理解のポイントは IIS とセキュリティです。このトピックについて自信を持つには、MSDN IIS サイトを参照する価値があります。 http://msdn.microsoft.com/en-us/library/aa292471%28v=vs.71%29.aspx

1) SQL サーバー DB がどこにあるかは問題ではありません。SQL サーバー インスタンスが存在する場合、役割を果たします。同じ domain/AD にある場合、Windows 統合セキュリティを使用して DB にログインするとうまくいきます。2) SQL に接続するユーザー ID が DB インスタンスの有効なユーザーであり、基礎となる DB に必要な権限を持っている場合、データにアクセスできます。

3) このコードは何ですか?

回答/検討が必要な質問が多数あります。

a) IIS で FORMS ログオンまたは Windows 統合ログオンを使用していますか。b) サービス ユーザーを使用して DB にアクセスしますか、それとも各ユーザーに DB に割り当てますか。c)アプリケーションのセキュリティモデルは何ですか。

http://leastprivilege.com/category/net-security/ Dominick Baier セキュリティ ブログも参照してください。

サンプルソリューションとして、(唯一のものではありません)。

  • Forms認証を使用するようにIISでWebサイトを設定できます
  • IIS で Web サイトが使用するアプリケーション プールを設定して、特定のサービス ユーザーを使用します。ユーザー ID とパスワードを IIS アプリケーション プールに入力します。最初にドメインでこのユーザーを作成する必要があります。できるだけ少ない権利を割り当てます。
  • このサービス ユーザーを SQL サーバーに追加し、DB でアクセスする必要がある十分な権限を付与します。(2 ステップ) したがって、サービス ユーザーは DB にアクセスできますが、それ以外のことはほとんどできません。

したがって、これにより 、Web サイトの背後にあるアプリ プールに設定したシステム ユーザーとしてSystem.Environment.UserNameが残ります。アプリケーションのセキュリティは、必要に応じて管理されます。.net 4.5 に到達したら、プリンシパルを主張するのは「新しい方法」です。
ただし、ここでは必要に応じてシンプルに保ちます。 Thread.CurrentPrincipal.Identity.Name には、フォーム ベースのユーザーの名前が含まれます。

幸運を...

ここに画像の説明を入力

于 2013-01-31T02:42:36.963 に答える