フォーム認証資格情報
更新 : 2007 年 11 月
ログオン時のユーザーの検証に使用するフォーム認証資格情報は、外部のデータ ソースまたはアプリケーション構成ファイルに格納できます。
メモ : |
---|
ASP.NET メンバシップは、フォーム認証を使用するアプリケーションでユーザー資格情報の格納と管理に適した方法です。詳細については、「メンバシップを使用したユーザーの管理」を参照してください。 |
アプリケーションの構成ファイルへのユーザーの格納
フォーム認証を使用する場合は、Web サイトの構成ファイルの credentials セクションのユーザーとパスワードのペアを使用してユーザーを検証できます。Authenticate メソッドを使用して、ユーザーから収集した資格情報を credentials セクションのユーザー名とパスワードのペアのリストと比較し、アクセスを認可するかどうかを判断できます。Kim というユーザーと John というユーザーが正しいパスワードを入力すればログオンできるようにする例を次に示します。
<credentials passwordFormat="SHA1" >
<user name="Kim"
password="07B7F3EE06F278DB966BE960E7CBBD103DF30CA6"/>
<user name="John"
password="BA56E5E0366D003E98EA1C7F04ABF8FCB3753889"/>
</credentials>
この例の資格情報のペアは、SHA1 (Secure Hash Algorithm-1) パスワード ハッシュ形式を使用して暗号化されています。PasswordFormat 属性は必須です。次の表に、このプロパティの値を示します。
値 |
説明 |
---|---|
パスワードはクリア テキストで格納されます。ユーザーのパスワードは変換されずに直接この値と比較されます。 |
|
パスワードは MD5 (Message Digest 5) ハッシュ ダイジェストを使用して格納されます。資格情報を検証するために、ユーザーのパスワードは MD5 アルゴリズムによってハッシュ演算され、格納されている値と比較されます。この値を使用すると、クリア テキストのパスワードが格納されたり、比較されたりすることはありません。このアルゴリズムは、パフォーマンスの点で SHA1 より優れています。 |
|
パスワードは SHA1 ハッシュ ダイジェストを使用して格納されます。資格情報を検証するために、ユーザーのパスワードは SHA1 アルゴリズムによってハッシュ演算され、この値と同じかどうかが比較されます。パスワードはクリア テキストでは絶対に格納されません。このアルゴリズムのセキュリティ機能は MD5 アルゴリズムより優れているためこれを使用してください。 |
.NET Framework には、永続的な格納のためにプログラムによってハッシュ値を簡単に作成するためのクラスとメソッドが用意されています。この作業をプログラミングするために役立つクラスの 1 つに FormsAuthentication クラスがあります。ハッシュ演算を実行するには、このクラスの HashPasswordForStoringInConfigFile メソッドを使用します。さらに細かく制御する場合は、System.Security.Cryptography クラスを使用することもできます。
テキスト ファイルに格納されているハッシュされたパスワードは、元のパスワードの再生成には使用できませんが、辞書攻撃への脆弱性を持っています。このタイプの攻撃では、攻撃者はパスワード ファイルへアクセスした後、大きな辞書のすべての単語をハッシュ演算し、生成されたハッシュ値と格納されているハッシュ値を比較することによって、パスワードを予測します。ハッシュされたパスワードをどのような方法で格納する場合にも、辞書攻撃を防ぐために、パスワードには一般的な単語を使用せず、いくつかの数字と英数字以外の文字を含めるようにユーザーに要求する必要があります。ASP.NET メンバシップを使用して資格情報を格納すると、資格情報の管理をさらに簡略化できます。詳細については、「メンバシップを使用したユーザーの管理」を参照してください。