Мне поручено выполнить проверку подлинности Windows для проекта, над которым я работаю. Я повсюду просматривал примеры, но ни один из них не соответствует моей ситуации.
Все пользователи, у которых есть действительная учетная запись Windows, должны иметь доступ к приложению, но только некоторые пользователи, настроенные как Admin, должны иметь доступ к некоторым частям сайта.
Я думал, что это будет случай использования:
User.Identity.IsAuthenticated
но это всегда возвращает false. Мое очень ограниченное понимание этого означает, что я считаю, что это должно быть правдой. Как я могу автоматически аутентифицировать пользователя, используя учетную запись, в которую они вошли, поэтому им не нужно вводить комбинацию имени пользователя и пароля?
Я использую MVC 5.
Вы хотите внедрить 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>
Это должно помочь вам начать, определенно проверить ссылку для большего понимания контекста. Дайте мне знать, если вам нужна дополнительная помощь в этом