現在の2層アプリケーション
ASP.NET(メンバーシップ/ロール)– BL – DAL – DB
ユーザーが認証(メンバーシップ)された後、ロールを使用して、「レポート」や「管理」などのさまざまなメニュー項目への承認を容易にします。ただし、承認の一環として、応答フィルタリングも考慮する必要があります。たとえば、ユーザーの役割に関係なく、IDでステートメントを取得する方法は、確立されたデータベース関係を介してユーザーに属するステートメントのみを取得できるユーザーに限定する必要があります。これを容易にするために、Webアプリケーションはセッション中に各BLオブジェクトに注入されるプロファイル(POCO)を維持します(おそらくこのオブジェクトはに組み込まれている必要があります)IIdentity
)。その後、BL内で、ID Xのリクエストが実際にステートメントを返す必要があるかどうかを判断できます。これは、このステートメントをリクエストしているユーザーがわかっており、ステートメントとそれにアクセスできるユーザーとの関係がわかっているためです。 。
将来の3層アプリケーション
ASP.NET(メンバーシップ/ロール)– WCF – BL – DAL – DB
認証は同じままのようです。WCFサービスをパスワードで保護して、Webアプリケーション(またはユーザー/パスワードを持つ他のアプリケーション)のみがアクセスできるようにすることができます。ただし、応答フィルタリングを容易にするにはどうすればよいですか?ASP.NET IPrincipal
/IIdentity
をサービスに渡すためのシームレスなメカニズムはありますか?はいの場合、ASP.NET以外のクライアントを同じサービスに接続している場合、これによりどのように制限されますか?そうでない場合、この情報はリクエストdtoまたはリクエストヘッダーの一部である必要がありますか?