8

ASP.NET から WindowsForms アプリ開発に移行したとき、同様のコントロールが動作することを期待していました。驚いたことに、セキュリティ コントロール (ログイン、ユーザー管理など) が表示されませんでした。

それとも、アプリケーションに独自のセキュリティ (ロール ベースのセキュリティ、ユーザー管理など) を実装する必要がありますか?

アプリケーションは内部使用 (10 ~ 20 ユーザー) 向けですが、機密データのためセキュリティが非常に重要です。(MSSQL Server 2005 はバックエンド、.NET 3.5 にあります)

どんな情報でもいただければ幸いです。

編集:

私の質問は、「WinForms に ASP.NET のメンバーシップ プロバイダーの類似物はありますか?」ということだと思います。

EDIT2:

グーグルでこの記事を見つけた後、試してみます。他の提案は大歓迎です。

4

6 に答える 6

3

あなたは受け入れられた答えを持っていないので、別の質問を調査しているときにこの質問に出くわしたので、私はあなたにいくつかの指針を与えるよう努めます.

指摘されているように、win フォーム アプリでのユーザー管理とロールベースのセキュリティは、実際にクライアント側で機能するものではありません。Web の例えで、サーバー側に情報を保持せずに、JavaScript と Cookie のみを使用してすべてのセキュリティを実装しようとすることを想像してみてください。デフォルトでは安全ではありません。

また、提案されているように、データベースにセキュリティを実装し、ユーザーが win フォームからデータベースに直接接続できるようにすることができます。このようなコースを受講しないことを強くお勧めします。ユーザー管理は悪夢になります。中間層が必要です。

あなたがすべきことは、ロールベースのセキュリティを実装する Web サービスを構築することです (あなたはそれに慣れているので -- より良い承認オプションが他にもあります)、カスタム認証ストアを備えています。WCF を使用して Web サービスを構築する場合は、ASP.NET で使い慣れているのと同じ RoleProvider クラスと MembershipProvider クラスを使用できます。

その Web サービスは、システムのすべてのビジネス ロジックを処理し、データベースへの接続を担当します。安全な抽象化レイヤーを提供し、ユーザーを管理するために必要なデータベース管理の量を減らします。win フォーム アプリは UI シェルになり、ユーザー インタラクションの処理と事前のデータ検証 (中間層でも検証する必要があります) のみを担当し、それ以外は何もしません。

于 2009-07-23T16:29:02.890 に答える
2

マイクロソフトは、あなたが探していると思うことを正確に実行するクライアント アプリケーション サービスをリリースしました...

http://msdn.microsoft.com/en-us/library/bb384297.aspxは公式ドキュメント ですhttp://aspalliance.com/1595_Client_Application_Services__Part_1は素敵なチュートリアルです (スクリーンショットなど付き)

于 2009-04-28T11:45:45.323 に答える
1

私は同じものを探していましたが、今まで何も見つかりませんでした。これをチェックしてください:

ここではあまりありません: WinForms の NET プロバイダー http://windark.net/blog/PermaLink,guid,5341a7d0-4eab-473d-9143-a3fa6c41db90.aspx

解決策はここにあります。良いサンプル (VB): Windows フォーム アプリケーションでの ASP.NET メンバーシップ プロバイダーの使用 http://www.theproblemsolver.nl/usingthemembershipproviderinwinforms.htm

しかし、それから私は、Winforms に相当する aspnet コントロールも書いた人がいると思いましたか? MSDN Mag の記事: Unify Windows Forms and ASP.NET Providers for Credentials Management http://msdn.microsoft.com/en-us/magazine/cc163807.aspxが始まりです 。

これがあなたの質問に答えてくれることを願っています;)

于 2009-07-28T12:09:19.100 に答える
0

ログインフォームについては、CredentialsUIPromptForCredentials(credui.dll)へのap/invoke呼び出しのラッパーである独自のコンポーネントを使用します。詳細についてはこのMSDNの記事を参照してください。ユーザーのパスワードを安全に記憶する機能などの機能を提供します。

これがフレームワークで利用できないのはちょっと驚きです。おそらく、credui.dllはXP以降でのみ使用可能であり、その場合、フレームワークの将来のバージョンで表示される可能性があります。

ロールベースのセキュリティに関しては、スマートユーザーが逆アセンブラを使用してソースコードにアクセスできるため、クライアントアプリでは本質的に安全ではありません。

したがって、WinFormsアプリでASP.NET RoleManagerを使用することはできますが、積極的に推奨されているわけではありません。RoleManagerを使用すると、ユーザーは、慎重に作成された承認ルールをバイパスするために、構成ファイルでRoleManagerを独自のより自由な実装に置き換える必要があります。

安全な方法は、クレデンシャルの入力を求め(またはWindowsクレデンシャルを使用)、認証のためにこれらをサービス層(データベースに直接、またはWebサービスなど)に渡すことです。

于 2009-04-24T05:54:23.253 に答える
0

(中間層なしで) データベースに直接接続している場合は、データベース レベルでセキュリティを適用する必要があります。

クライアント マシンからデータベースに直接接続する予定なのか、Web サービスなどを介して接続する予定なのかについて、さらに詳しい情報があれば、それを反映するように回答を更新できます。

データベースに直接接続する場合は、アプリケーションだけでなく、SQL Server に接続できるすべての人からデータベースが保護されていることを確認する必要があります。Windows 認証を使用して SQL Server に接続し、それに基づいてロールを設定できます。

于 2009-04-24T05:33:54.317 に答える