Le bout de code suivant est censé authentifier des user sur base de l'active directory.
Le problème c'est que ça marche une fois sur deux je ne sais pas pourquoi.
Exemple lorsque j'entre des datas qui n'existent pas dans l'activedirectory la première fois il m'affiche bien le message d'erreur que j'attends, mais lorsque je répète au cours de la même session une entrée avec de mauvaises datas il m'authentie. Veuillez jeter un oeil sur le code et me dire ce qui ne va pas...merci
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.DirectoryServices;
public partial class Default2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void ButtonLOGIN_Click(object sender, EventArgs e)
{
//Récucpération du username et du password
//Comment savoir si brugman ou bordet ou stPierre
string monUserName = this.TextBoxLOGIN.Text.ToString();
string monMotPasse = this.TextBoxPASSWD.Text.ToString();
// authentification en s'appuyant sur l'active directory
// Et test pour voir si athentification ou pas
if (Authenticate("stpierre-bru", monUserName, monMotPasse))
{
//LblResutActiveDir.Text = "Connexion Active Directory OK";
//redirection vers la page d'accueil
Response.Redirect("Default.aspx");
}
else
{
LblMsgActiveDirectory.Text = "Erreur connexion AtiveDirectory";
//redirection vers page erreur
}
}
public static bool Authenticate(string domain, string username, string password)
{
bool bAuth = false;
DirectoryEntry entry = null;
try
{
// connection au port 389 du serveur de l'active directory
entry = new DirectoryEntry(string.Concat(@"LDAP://", domain), username, password);
//On force l'authetification a avoir lieu
object nativeObject = entry.NativeObject;
bAuth = true;
}
catch (Exception)
{
bAuth = false;
}
finally
{
entry.Close();
entry.Dispose();
}
return bAuth;
}
}
Partager