44 votes

ASP.NET MVC - Authentifier les utilisateurs dans Active Directory, mais exigent un nom d'utilisateur et un mot de passe entrés

Je suis l'élaboration d'un MVC3 application qui va obliger l'utilisateur à être authentifiés à l'aide d'une ANNONCE. Je sais qu'il y a l'option dans MVC3 pour créer une Application Intranet qui authentifie automatiquement un utilisateur à l'encontre d'un AD, mais il utilise l'Authentification Windows et se connecte automatiquement sur. Cette demande peut être consulté sur "Ouvrir" les postes de travail où l'utilisateur devra entrer dans leur Domaine nom d'utilisateur et Mot de passe. Les exemples ou tutoriel en ligne serait formidable. Un exemple de projet serait exceptionnel.

44voto

Khepri Points 5790

Vous pouvez utiliser l'Internet standard modèle d'application avec l'authentification de formulaires et d'insérer un ActiveDirectoryMembershipProvider dans la web.config:

<connectionStrings>
    <add name="ADConnectionString" connectionString="YOUR_AD_CONN_STRING" />
</connectionStrings>

<system.web>
    <authentication mode="Forms">
        <forms name=".ADAuthCookie" loginUrl="~/Account/LogOn" timeout="15" slidingExpiration="false" protection="All" />
    </authentication>
    <membership defaultProvider="MY_ADMembershipProvider">
        <providers>
            <clear />
            <add name="MY_ADMembershipProvider" type="System.Web.Security.ActiveDirectoryMembershipProvider" connectionStringName="ADConnectionString" attributeMapUsername="sAMAccountName" />
        </providers>
    </membership>
</system.web>

De cette façon, vous obtenez l'application Internet modèle de formulaire de connexion, et il valide à l'encontre de la publicité pour vous.

Ensuite, c'est juste une question de quelques AccountController de nettoyage pour enlever la réinitialisation du mot de passe/changer de mot de passe/s'inscrire fonctionnalité laissant juste de Connexion.

10voto

cpoDesign Points 1996

Comme mentionné ci-dessus, vous pouvez utiliser le fournisseur d'appartenances définis dans le web.fichier de configuration.

Le code ci-dessous dans la mise en œuvre de la "AccountController" de la MVC 3 code de Modèle et a été légèrement modifié pour fonctionner avec ActiveDirectory:

 [HttpPost]
    public ActionResult LogOn( LogOnModel model, string returnUrl )
    {
      if( ModelState.IsValid )
      {
        // Note: ValidateUser() performs the auth check against ActiveDirectory
        // but make sure to not include the Domain Name in the User Name
        // and make sure you don't have the option set to use Email Usernames.
        if( MembershipService.ValidateUser( model.UserName, model.Password ) )
        {
            // Replace next line with logic to create FormsAuthenticationTicket
            // to encrypt and return in an Http Auth Cookie or Session Cookie
            // depending on the 'Remember Me' option.
            //FormsService.SignIn( model.UserName, model.RememberMe );

            // Fix this to also check for other combinations/possibilities
            if (!String.IsNullOrEmpty(returnUrl))
            {
                return Redirect(returnUrl);
            }
            else
            {
                return RedirectToAction("Index", "Home");
            }
        }
        else
        {
            ModelState.AddModelError("", "The user name or password provided is incorrect.");
        }
    }

Si vous l'utilisez .NET 3.5 -- alors lisez cet article pour l'alternative:

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X