web-dev-qa-db-fra.com

Connexion à ASP.NET MVC Identity sans mot de passe

On m'a confié la tâche de modifier une application ASP.NET MVC de telle manière que surfer sur myurl? Username = xxxxxx se connecte automatiquement à l'utilisateur xxxxxx, sans demander de mots de passe.

J'ai déjà dit très clairement que c'est une idée terrible pour de nombreuses raisons et scénarios liés à la sécurité, mais les responsables sont déterminés. Le site ne serait pas accessible au public.

Donc: existe-t-il un moyen de se connecter sans mot de passe, par exemple en étendant Microsoft.AspNet.Identity.UserManager et en modifiant AccountController?

Du code:

  var user = await _userManager.FindAsync(model.UserName, model.Password);
                    if (user != null && IsAllowedToLoginIntoTheCurrentSite(user))
                    {
                        user = _genericRepository.LoadById<User>(user.Id);
                        if (user.Active)
                        {
                            await SignInAsync(user, model.RememberMe);

_userManager contient une instance d'un Microsoft.AspNet.Identity.UserManager.

et SignInAsync ():

 private async Task SignInAsync(User user, bool isPersistent)
    {
        AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);
        var identity = await _userManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie);
        if (user.UserGroupId.IsSet())
            user.UserGroup = await _userManager.Load<UserGroup>(user.UserGroupId);

        //adding claims here ... //

        AuthenticationManager.SignIn(new AuthenticationProperties { IsPersistent = isPersistent }, new CustomClaimsIdentity(identity));
    }

AuthenticationManager serait OwinSecurity.

24
Bjorn

Il vous suffit d'utiliser le gestionnaire d'utilisateurs pour rechercher l'utilisateur par son nom. Si vous avez un enregistrement, connectez-vous-le.

    public ActionResult StupidCompanyLogin()
    {

        return View();
    }

    [HttpPost]
    //[ValidateAntiForgeryToken] - Whats the point? F**k security 
    public async Task<ActionResult> StupidCompanyLogin(string name)
    {

        var user = await UserManager.FindByNameAsync(name);

        if (user != null)
        {

            await SignInManager.SignInAsync(user, true, true);
        }

        return View();
    }
62
heymega