Можно ли принудительно выполнить проверку с MembershipProvider.ValidateUser? - PullRequest
0 голосов
/ 20 марта 2012

Мне может понадобиться добавить какой-нибудь бэкдор, где системный администратор сможет войти на сайт aspnet.mvc, используя учетную запись клиента, зная только имя пользователя.

Возможно ли это, например, с использованием хешированного пароля от aspnet membershipprovider или пароля суперпользователя?

1 Ответ

0 голосов
/ 20 марта 2012

Если вы хотите получить доступ к бэкдору, вам не нужно знать пароль пользователя.Просто их имя пользователя.

Вы можете сделать это, просто написав FormsAuthentication.SetAuthCookie(username, false).

Просто убедитесь, что вы ограничиваете доступ к этой функции.Например, создайте роль под названием «Агент аутентификации».В методе действия контроллера, который делает доступ к бэкдору, убедитесь, что вы разрешаете его только для пользователей с ролью «Агент аутентификации».

[HttpPost]
[Authorize("Authentication Agent")]
public virtual ActionResult SignInAs(SignInAsForm model)
{
    if (model != null)
    {
        MembershipUser member = null;
        if (!string.IsNullOrWhiteSpace(model.UserName))
        {
            model.UserName = model.UserName.Trim();
            member = Membership.GetUser(model.UserName);
        }

        if (member == null)
            ModelState.AddModelError("UserName", string.Format(
                "Username '{0}' could not be found.", model.UserName));

        if (ModelState.IsValid)
        {
            Session["WasSignedInAs"] = User.Identity.Name;
            FormsAuthentication.SetAuthCookie(model.UserName, false);
            TempData["FlashMessage"] = string.Format(
                "Impersonation was successful. You are signed in as {0}.",
                    model.UserName)
            if (!string.IsNullOrWhiteSpace(model.ReturnUrl))
                return Redirect(model.ReturnUrl);
            return RedirectToAction(FormsAuthentication.DefaultUrl);
        }
        return View(model);
    }
    return HttpNotFound();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...