私はCSメジャーで、ASP.netサイトの設計を終えました。そして、私はログイン認証システムが必要でした...私は本当に勉強したいと思ったのでSQLMembershipProviderを使いたくなかった自分で作る方法...とにかくこれは私が思いついたものです、誰かが私にフィードバック、ヒント、アドバイスをくれればと思っていました。アドバンスASP.net認証
でおかげ
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Security.Cryptography;
/// <summary>
/// Summary description for PwEncrypt
/// </summary>
public class PwEncrypt
{
public const int DefaultSaltSize = 5;
private static string CreateSalt()
{
RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
byte[] buffer = new byte[DefaultSaltSize];
rng.GetBytes(buffer);
return Convert.ToBase64String(buffer);
}
public static string CreateHash(string password, out string salt)
{
salt = CreateSalt();
string saltAndPassword = String.Concat(password, salt);
string hashedPassword = FormsAuthentication.HashPasswordForStoringInConfigFile(saltAndPassword, "SHA1");
hashedPassword = string.Concat(hashedPassword, salt);
return hashedPassword;
}
public static string CreateHashAndGetSalt(string password, string salt)
{
string saltAndPassword = String.Concat(password, salt);
string hashedPassword = FormsAuthentication.HashPasswordForStoringInConfigFile(saltAndPassword, "SHA1");
hashedPassword = string.Concat(hashedPassword, salt);
return hashedPassword;
}
public static bool comparePassword(string insertedPassword, string incUserName, out string newEncryptedPassword, out string originalPassword)
{
databaseInteraction DBI = new databaseInteraction();
string actualPassword ="";
string salt = "";
DBI.getSaltandPassword(incUserName, out salt, out actualPassword);
string hashedIncPassword = PwEncrypt.CreateHashAndGetSalt(insertedPassword, salt);
// hashedIncPassword = string.Concat(hashedIncPassword, salt);
newEncryptedPassword = hashedIncPassword;
originalPassword = actualPassword;
if (newEncryptedPassword == originalPassword)
{
return true;
}
else { return false; }
}
カスタムメンバーシッププロバイダを作成する場合は、まずMemberShipProviderから継承する必要があります。そして、これはかなりグーグルであれば十分に文書化されています。 –
本当に他の選択肢がない限り、独自の認証およびセッション管理スキームをロールしたり、独自のコントロールを構築したりしないでください。私はちょうどそれをしたい、修飾されていません。おもしろい読書:http://www.troyhunt.com/2010/07/owasp-top-10-for-net-developers-part-3.html –
@ChristopheGeersまさしく...あなた自身で行うのはかなり面倒ですが、組み込みのMembershipProvidersはうまくいきますが、そうするためには設定が必要です。 – sinni800