2009-03-13 19 views
5

私は長い間プログラミングしてきましたが、私は世界で最も経験豊かではありません.Net開発者です。私は最近、自分のWebサイトでForms認証を使用しているプロジェクトを選んだ。私は最初に.Net 1.1のフォーム認証を調べましたが、その時私はそれを私の主要な認証形式として使用しないことに決めたいくつかの制限がありました。フォーム認証

このプロジェクトでは、ユーザーにはフォーム認証がサポートする役割とグループメンバーシップが必要です。たとえば、「ユーザーA」は「会社A」の「管理者」です。フォーム認証でこのようなユーザー構造がサポートされるようになりましたか?

私は、フォーム認証がパスワードをプレーンテキストとして返信することも読んでいます。このクライアントはSSLを使用しません。これは本当ですか?

現在のコードベースはフォーム認証を使用しますが、グループはサポートしていません(ロールをサポートしています)。したがって、必要なグループをサポートするためにフォーム認証を変更するか、フォーム認証を取り除き、通常使用する認証フレームワークを使用する必要があります。フォーム認証がグループをサポートし、十分に安全であれば、それに固執する必要があります。フォーム認証にセキュリティの問題がある場合やグループをサポートしていない場合は、そのフォームの認証を削除する必要があります。

私はインターネットで賛否両論の記事を検索しましたが、運はありません。皆さんはどう思いますか?

+0

.net 1.1にバインドされていますか。 – Stormenet

+0

いいえ、2.0または3.5を使用できます。最初に私が1.1でそれを気に入らなかったと判断した後、私はフォーム認証を学ぶために戻っていません。私が読んだことから、今は良く見えますが、まずそれについて意見を得ると思っていました。 – mlindegarde

答えて

5

あなたがMembershipでフォーム認証を使用する要件を満たすために。アプリケーションでSQL Serverデータベースを使用している場合は、これを実現するためにメンバーシッププロバイダとしてSQLMembershipProviderを使用できます。

Examining ASP.NET 2.0's Membership, Roles, and Profileを参考にしてください。

接続が保護されていない場合にパスワードをプレーンテキストとして送信することについて懸念しています。

は、実際には通常、ハッシュ化されて送信されたパスワードは、(アルゴリズムは、選択されたメンバシッププロバイダに依存します)、最終的にそこに保存されているとして、それはあります。 もちろん、接続が保護されていない場合、ハッシュされたパスワードを取得してアプリケーションをハックすることができますが、少なくともプレーンユーザーのパスワードが盗まれて使用される可能性は排除されます。他のサービスにアクセスすることができます(多くの人が複数のサービスで同じパスワードを使用しています)。セキュリティで保護されるためには、ここでhttpsを使用する必要があります。警告の注意点としては

、私ははるかにその分野の専門家であることからですが、あなたがこの便利なのいくつかを見つけるかもしれないけれども、非常に最近、私はあなたが私が記述されている同様の問題に直面しました。

+0

これを少しクリアするには、パスワードがDbにハッシュされて送信されます。ログインフォーム(httpsが必要な場所)を送信するときに受け取ったばかりのパスワードはブラウザに送信されません。役割提供者は自分の役割/会社の要求、または基本のRoleProvider(Admin-CompanyA :)を賢明にすることはできますが)を処理しません。 – eglasius

+0

リンクをありがとう、非常に有益。私は "投票アップ"をするだろうが、私はまだそれを行うには十分な評判がない。 – mlindegarde

+0

@Freddy - 指摘に感謝 - 金曜日の午後に質問に答えないように、特に13日の金曜日に質問に答えないようにする必要があります。私はいくつかの自由時間を見つけると私の答えを編集します – kristof

1

フォーム認証はパスワードをプレーンテキストとして返しません。 login/pwdが受信時に(https ... sslを使用して)保護されている限り、そこにはセキュリティ上のリスクはありません。

本当に認証を行う必要がある場合は、認証のフォーム認証に頼ることができ、独自のメカニズムで承認を行うことができます。

+0

私が言及したように、HTTPS/SSLを使用していないので、それは私の懸念でした。しかし、私はそれが計画のテキストとしてサーバーに送信されると思う。 私は、フォーム認証を使用し、認証によって提供されたIDに基づいて自分の認証を行うことができると考えていました。 – mlindegarde

+0

あなたは自分の認証を行うことができますが、もっとも簡単な方法ではなく、IDの代わりにユーザー名(HttpContext.Current.User.Identity.Name)(ログイン後)を取得します。 – eglasius

1

フォームの認証は、あなたが何をしているかに適しています。役割をサポートしますが、グループをサポートしていません。ただし、必要に応じて、グループの問題を緩和するために使用できるアクティブなディレクトリ統合のサポートが組み込まれています。個人的に、私はあなたが持っているものに固執し、それについてもっと学びます。 AD authモードではなくForms Authのフォームモードを使用する場合は、既存のフォーム認証データベースを使用してグループサポートを構築することを検討します。

theseのフォーム認証についてのMicrosoftのビデオを見ることを強くお勧めします。あなたはそれが使いやすいことが分かります。確かに、それはあなたが一緒に投げることができるものではありません、それはかなり堅牢で柔軟なフレームワークです。あなたはそれを読んで、これらのビデオを見たいと思うでしょう。しかし、あなたがそれに精通すると、開発コミュニティが安全で、サポートされ、非常に受け入れられていることがわかります。

私はちょうどあなたの質問をもう一度見直しましたが、あなたはSSLを使用していないと言いました。このサイトはどれくらい安全である必要がありますか?私にとっては、それは私の最初のビジネスの注文になるでしょうSSLに移動することです!

+0

これはインターネット(intrAnetではない)アプリケーションであることに注意することが重要です。ユーザーがインターネット経由でWebサイトに登録してもActive Directoryを使用できますか?私はWindowsのセキュリティ専門家ではありませんが、Active Directoryはイントラネット専用だと思いました。 – mlindegarde

+0

はい、外部のADフォレストを使用して認証することができます。 –

0

データベースでは、md5やその他のハッシング手段を使用しているプレーンパスワードテキストが保存されていません...文字列クライアント側またはサーバー側に変換するauth wheterに2つのハッシュ文字列を一致させることがわかりますもしあなたがsslを使うことを考えているのであれば、ASP.netのフォーム認証を使うべきだと思います...自分のフォームを認証し、いくつかの広告マイニングに基づいてフォームを作ってください。 ...

1

フォーム認証はネイティブにグループをサポートしません。私たちがやっていることは、ユーザーを「認証」する(彼らが誰であるかを証明する)ために使用し、独自のデータストアを使用してユーザーを「許可」する(彼らができることを記述する)ことです。

0

すべての入力をありがとう。私は自分の認証ライブラリを他のプロジェクトで引き続き使用するつもりだと思いますが、私はこのクライアントにとって最も良いことは、すでに部分的に存在するフォーム認証に固執することだと思います。

私は、Visual Studioと.NETプラットフォームで開発しますが、私は常に物事に「マイクロソフト」の方法を行うには好きではありません。私は何度も "Microsoft"の方法であなたが何をしているのか知っていれば避けることができる多くのオーバーヘッドを導入していることがわかります。

もう一度入力してください。

+0

まあ、幸いにも誰もあなたがここで何かを使用するように強制しません。 –

0

SSLを使用していない場合は、パスワードをクリアテキストで渡す必要があります。したがって、SSLの必要性。

の.Netフォーム認証が正しくしかし、これはワイヤ上の資格情報を保護しませんデシベルにパスワードをハッシュし、格納します。しかし、これはすべてのWebフレームワークに当てはまります。アプリでこれを実装するか、あなたを助けるためにいくつかのライブラリを見つける必要があります。このグループのピース用として