Il existe même une méthode plus simple qui vous est fournie par l'API Windows utilisant advapi32.dll.
Exemple:
[DllImport("advapi32.dll", EntryPoint = "LogonUserW", SetLastError = true, CharSet = CharSet.Auto)]
public static extern bool LogOnUser(string lpszUserName, string lpszDomain, string lpszPassword,
int dwLogOnType, int dwLogOnProvider, ref IntPtr phToken);
cette méthode retourne simplement true ou false si l'utilisateur est en effet dans le domaine et est entré correctement son mot de passe. Ensuite, vous venez de faire votre propre connexion dans l'authentification de vérification de méthode contre advapi32.dll.
public ActionResult SignIn(SignInModel model)
{
string domainName = CheckSignIn.GetDomainName(model.User.UserName);
string userName = CheckSignIn.GetUserName(model.User.UserName);
IntPtr token = IntPtr.Zero;
bool result = CheckSignIn.LogOnUser(userName, domainName, model.User.UniqueUserCode, 2, 0, ref token);
if (result)
{
if (!string.IsNullOrEmpty(Request.QueryString["ReturnUrl"]) && Request.QueryString["ReturnUrl"] != "/")
{
FormsAuthentication.RedirectFromLoginPage(model.User.UserName, false);
}
else
{
FormsAuthentication.SetAuthCookie(model.User.UserName, false);
return RedirectToAction("MyVoyages", "Voyage");
}
}
return SignIn(true);
}
simple, mais puissant.
duplication possible de [Comment authentifier LDAP dans .NET] (http://stackoverflow.com/questions/769268/how-to-authenticate-ldap-in-net) – Shai
Est-ce que [ma réponse ici aide du tout? ] (http://stackoverflow.com/questions/290548/c-sharp-validate-a-username-and-password-against-active-directory/499716#499716) - ceci est spécifiquement pour Active Directory –