Im un CS majeur et je viens de finir de concevoir un site ASP.net, et pour le site j'avais besoin d'un système d'authentification de connexion ... Je ne voulais pas utiliser SQLMembershipProvider car je voulais vraiment apprendre comment en fabriquer un seul ... Quoi qu'il en soit, c'est ce que j'ai imaginé, et je me demandais si quelqu'un pouvait me donner des commentaires, des conseils ou des conseils.Authentification ASP.net
Merci à l'avance
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; }
}
Si vous souhaitez créer un fournisseur d'appartenances personnalisé, vous devez d'abord hériter de MemberShipProvider. Et c'est assez bien documenté si vous google un peu. –
N'essayez pas de lancer vos propres schémas d'authentification et de gestion de session personnalisés ou de créer vos propres contrôles à moins que vous n'ayez pas vraiment d'autre choix. Je veux juste le faire, ne me qualifie pas. Une lecture intéressante: http://www.troyhunt.com/2010/07/owasp-top-10-for-net-developers-part-3.html –
@ChristopheGeers Exactement ... C'est assez compliqué de le faire soi-même, Les membres de MembershipProviders fonctionnent bien, ils doivent être configurés pour le faire. – sinni800