Проверка подлинности Windows в MVC 5

1

Мне поручено выполнить проверку подлинности Windows для проекта, над которым я работаю. Я повсюду просматривал примеры, но ни один из них не соответствует моей ситуации.

Все пользователи, у которых есть действительная учетная запись Windows, должны иметь доступ к приложению, но только некоторые пользователи, настроенные как Admin, должны иметь доступ к некоторым частям сайта.

Я думал, что это будет случай использования:

User.Identity.IsAuthenticated

но это всегда возвращает false. Мое очень ограниченное понимание этого означает, что я считаю, что это должно быть правдой. Как я могу автоматически аутентифицировать пользователя, используя учетную запись, в которую они вошли, поэтому им не нужно вводить комбинацию имени пользователя и пароля?

Я использую MVC 5.

Теги:
authentication
windows-authentication

1 ответ

1

Вы хотите внедрить LDAP и связать его с вашим Active Directory

ознакомьтесь с этой ссылкой, чтобы начать работу:

http://www.schiffhauer.com/mvc-5-and-active-directory-authentication/

Вот исходный код из ссылки:

Контроллеры учетных записей:

using System.Web.Mvc;
using System.Web.Security;

using MvcApplication.Models;

public class AccountController : Controller
{
    public ActionResult Login()
    {
        return this.View();
    }

    [HttpPost]
    public ActionResult Login(LoginModel model, string returnUrl)
    {
        if (!this.ModelState.IsValid)
        {
            return this.View(model);
        }

        if (Membership.ValidateUser(model.UserName, model.Password))
        {
            FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
            if (this.Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")
                && !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))
            {
                return this.Redirect(returnUrl);
            }

            return this.RedirectToAction("Index", "Home");
        }

        this.ModelState.AddModelError(string.Empty, "The user name or password provided is incorrect.");

        return this.View(model);
    }

    public ActionResult LogOff()
    {
        FormsAuthentication.SignOut();

        return this.RedirectToAction("Index", "Home");
    }
}

Модели просмотра счетов:

using System.ComponentModel.DataAnnotations;

public class LoginModel
{
    [Required]
    [Display(Name = "User name")]
    public string UserName { get; set; }

    [Required]
    [DataType(DataType.Password)]
    [Display(Name = "Password")]
    public string Password { get; set; }

    [Display(Name = "Remember me?")]
    public bool RememberMe { get; set; }
}

Наконец, обновления web.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.web>
      <authentication mode="Forms">
          <forms name=".ADAuthCookie" loginUrl="~/Account/Login" timeout="45" slidingExpiration="false" protection="All" />
      </authentication>
      <membership defaultProvider="ADMembershipProvider">
          <providers>
              <clear />
              <add name="ADMembershipProvider" type="System.Web.Security.ActiveDirectoryMembershipProvider" connectionStringName="ADConnectionString" attributeMapUsername="sAMAccountName" />
          </providers>
      </membership>
  </system.web>
  <connectionStrings>
      <add name="ADConnectionString" connectionString="LDAP://primary.mydomain.local:389/DC=MyDomain,DC=Local" />
  </connectionStrings>
</configuration>

Это должно помочь вам начать, определенно проверить ссылку для большего понимания контекста. Дайте мне знать, если вам нужна дополнительная помощь в этом

Ещё вопросы

Сообщество Overcoder
Наверх
Меню