全体的な設計は、WebsiteASP.NET/IIS でのフォームまたは Windows 認証から始まります。そして、あなたが望む/必要とするアプリケーションとDBの認証で終わります。アプリケーションの承認は別のトピックです。ここではそれについては説明しません。
必要な認証モデルを実際に述べることはありません。だから私は免責事項から始めます。これは、本番サイトで使用したい提案です。しかし、それは究極の最終的なゲームではありませんし、あなたが検討する唯一の短期的な解決策でもありません.
これは、ワンマンショーが機能するソリューションです。また、安全であり、実行を継続するための過度の管理者の労力は必要ありません。
Windows Auth 経由で SQL サーバー ログオンを使用します
が、すべてのユーザーを SQL サーバーに追加する必要はありません。
偽装のオプションもあります。しかし、それはトリッキーになる可能性があり、この説明はなりすましではありません。それは別の別のアプローチです。
まず、Web サイトが Windows 認証を使用していることを確認してください
Windows 認証を使用するように IIS を設定します。
これで、設定した IIS 上の Web サイトの背後にある APP プール。.
開始する良い方法として、APP プール内の疑似サービス ユーザーを提案します。つまり、WEBAPPLICATION_X_USER です。APP プールごとに個別のユーザーを持つことができます。各ユーザーは自分の DB のみにアクセスできます。したがって、アプリケーションの分離が得られます。ここにユーザーとパスワードを入力します。IIS は、必要に応じて暗号化および復号化します。(Web.config の計画テキストよりも優れています)
このユーザーは、サーバー自体で認証を減らす必要があります。ドメインまたはローカル管理者の管理者ユーザーではありません。SQLサーバーを使用してDBを作成できるように十分です。 したがって、通常のWindowsユーザーを作成します
ASP.Net を DB にログオンさせます。ASP.net でパスワードを暗号化および復号化します。
したがって、状況は IIS 上の Windows AUTH です。IIS には、SQL サーバーにログオンできる特別な Windows ユーザーを持つアプリケーション プールがあります。このユーザーを SQL サーバー インスタンスに追加し、このサービス ユーザーに DB を作成する機能を割り当てました。ユーザーにすべてのデータベースへのアクセスを許可しないでください:-)作成するものだけです。さらに、パブリック アクセス (EF 経由)。
WEB APP でユーザー資格情報の状況を確認します。[System.Security.Principal.WindowsIdentity]を参照してください。
これにより、Windows で認証されたエンド ユーザーが表示されます。
System.Environment.UserName には、IIS APP POOL に配置したサービス ユーザー ID が必要です。
これで、EF が SQL サーバー インスタンスでデータを作成またはアクセスするときに、WEB.CONFIG エントリが Windows 統合セキュリティを使用するように設定されている場合、System.Environment.UserName に接続します。
<connectionStrings>
<add name="DbContextName" connectionString="Data Source=Your SQL server Instance;Initial Catalog=The DBNAME;Integrated Security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
そして、あなたは認証されたユーザーを知っています。
httpContextは、スレッドの現在のプリンシパルと同様にそれを提供します。HttpContext.User はデフォルトで {System.Security.Principal.WindowsPrincipal} にマップされます
したがって、アプリケーション レベルのチェックを実行できます。同じアプローチがフォーム認証でも機能するはずです。
警告: Windows WPFアプローチを使用している場合 (つまり、IIS を使用していないため、APP プールがない場合)、このアプローチは変更する必要があり、より複雑であり、開始するのに最適な場所ではなくなりました。
これがあなたが始めるのに役立つことを願っています