0

テーブルを含むEntityFrameworkモデルがあります

apsnet_Users
aspnet_Memberships 

ユーザー名とパスワードの検証をWCFライブラリで確認したい方法

にメンバーシップを追加app.configしませんか、そのようなことを実現するにはどうすればよいですか?

よろしくお願いします

4

2 に答える 2

4

基本的な(ただし安全な)ユーザー名/パスワードデータベースには、次のような列が必要です。

UserName     - Text
PasswordSalt - Binary
PasswordHash - Binary

ユーザー名はプレーンテキストとして保存できます。

ソルトはランダムなバイト文字列であり、少なくともハッシュと同じ長さであることが望ましい。

パスワードハッシュは、パスワード+ソルトのバイナリハッシュです。

ユーザーに新しいパスワードを与えるときの基本的な手順は次のとおりです。例としてSHA-256ハッシュを使用します。

  1. 目的のパスワードをバイト配列に変換します。
  2. CSPRNGを使用して、32バイト長の別のバイト配列を生成します。これが塩です。
  3. パスワードバイト配列の最後にソルトを追加します。
  4. SHA-256でパスワードをハッシュします。
  5. ソルトをデータベースに保存します。
  6. パスワードハッシュをデータベースに保存します。

次に、ユーザーがログイン時にパスワードを入力すると、これが手順になります。

  1. データベースでユーザーを検索します。
  2. 入力したパスワードをバイト配列に変換します。
  3. データベースのソルトをパスワードバイト配列の最後に追加します。
  4. SHA-256でパスワードをハッシュします。
  5. ハッシュがデータベース内のハッシュと一致する場合、パスワードは正しいものでした。

このパスワード認証の方法は、セキュリティの高いアプリケーションに推奨される方法です。遅くも、実装するのも非常に難しいことではありません。一番いいのは、パスワードテーブル全体を好きな人に渡すことができ、彼らができることのほとんどは、ユーザーを選んでパスワードの推測を開始することです。

于 2012-06-04T15:44:30.090 に答える
0

エンティティフレームワークやその他の認証アルゴリズムを使用できなかったため、SQLでメンバーシップを直接使用しました。Microsaoftは暗号化を取得するのが非常に困難です。

于 2012-06-06T18:30:25.213 に答える