2009-02-24 11 views
7

私は、スワップ可能な具体的な実装に裏打ちされた一連の.NETインターフェイスとして公開されるビジネスロジックレイヤー(「リポジトリ」)を持っています。ビジネスロジック層は認証と認証を実装する必要がありますか?

私は、このビジネスレイヤーにIUserIdentityやIUserRoleなどのインターフェイスがあり、機密データにアクセスするすべてのメソッドがIUserIdentityを取得し、アクションを許可する前に承認を実行したことを意味する認証と承認(authn/authz)を実装しました。

ビジネス層はこの時点まで非常にフロントエンドにとらわれていませんが、現在はASP.NET Webサイトに統合しようとしていますが、ASP.NET自体には豊富な認証/承認メンバーシップと役割APIを介してシステムに組み込まれています。

質問:私はビジネスロジック層からすべてのauthn/authzを削除し、これを行うにはウェブフロントエンドに頼るべきですか?これは事をたくさん単純化するでしょうが、後にそれを動かすことを後悔するかどうかは分かりません。

代わりに、私のビジネスロジックにauthn/authzを保存し、カスタムメンバーシップ/ロールプロバイダを使用してASP.NETに統合することもできます。しかし、これは本当に面倒なようです...私はまだこれを行うコストを調査する必要があります。

あなたは何をしますか(やっていますか?)理由は何ですか?

答えて

5

セキュリティは、側面に属するクロスカッティングの問題だと思います。あなたがSpring.NETを使用しない限り、.NETに側面があるかどうかわかりません。

+0

実際には(申し訳ありませんが、私はこれを述べるべきでした)私は、Authorize属性によるセキュリティのアスペクトコンセプトを実装するASP.NET MVCを使用しています。 – DSO

+0

.NETの属性は、正しくリコールすれば、Java EEの注釈と似ています。さまざまなメソッド、クラス、パッケージにアスペクトを適用するためのAspectJ表現言語のようなものはありますか? – duffymo

1

ASP.NETのフォーム認証はカスタマイズが非常に簡単で、ビジネスロジック層はフロン​​トエンドにとらわれないままです。

this approachから離れることを検討し、代わりにForms Authenticationを試してください。基本的には、確立されたメソッドをLoginコントロールのAuthenticateイベントから呼び出すことができます。

0

複数のフロントエンド(asp.net、winforms、mobile?)を使用するか、(web)サービスを介してビジネスレイヤを公開する予定ですか?次に、おそらくビジネス層の上に認証を実装する必要があります。

アクセスを許可するだけであれば、IIS上で統合セキュリティを使用してカスタムコードを作成することはできません。

また、asp.netメンバーシッププロバイダを調べることもできます。

1

asp.netを使用して同じものを直接使用する場合は、既存のロジックをそのまま使用し、既存のセキュリティクラスの周りにカスタムメンバーシップ/ロールプロバイダを作成することをお勧めします。これはあなたの考えるよりも簡単に行うべきです。

http://www.codeproject.com/KB/aspnet/customaspnetproviders.aspx

すでにセキュリティ権限を管理するためのクラスを持っているように、これはちょうどあなたの既存のロジックをラップすることを意味します。

これはまた後でセキュリティロジックを使用するためにあなたを助ける、あなたのビジネス・ロジックを消費し、またはWinフォームのクライアントを作成するときにWebサービスとしてビジネスロジックを公開するとき

0

私は役割を信じて、私たちは言わせてCSLAがそれを置くところであるビジネス層にベースのセキュリティがあるべきです。

関連する問題