Поскольку вы используете AD LDS, я не думаю, что режим аутентификации "Windows" будет таким полезным. Я считаю, что вам необходимо создать вид входа в систему (здесь / Аккаунт / Вход в систему) и использовать режим аутентификации «Формы».
Введите следующую информацию в web.config
<authentication mode="Forms">
<forms name=".ADAuthCookie" loginUrl="~/Account/Logon" timeout="30" slidingExpiration="false" protection="All"/>
</authentication>
<authorization>
<deny users="?"/>
</authorization>
Аутентификация пользователя может быть выполнена с помощью System.DirectoryServices.AccountManagement. Код контроллера должен выглядеть примерно так:
public ActionResult Logon(LogonModel model)
{
if (model.Username != null && model.Password != null)
{
string container = "CN=...,DC=....,DC=...."; //Your container in LDS
string ldapserver = "server:port"; //LDS server
PrincipalContext context = new PrincipalContext(
ContextType.ApplicationDirectory,
ldapserver,
container,
ContextOptions.SimpleBind);
bool authenticate = context.ValidateCredentials(string.Format("CN={0},{1}", model.Username, container), model.Password, ContextOptions.SimpleBind);
if (authenticate)
{
FormsAuthentication.RedirectFromLoginPage(model.Username, false);
}
else
{
System.Threading.Thread.Sleep(5000);
this.ModelState.AddModelError("Password", "Wrong username or password");
}
}
return View("Logon", new LogonModel { Username = model.Username });
}
Обратите внимание, что это ТОЛЬКО решает аутентификацию, а не авторизацию.
Вы также можете использовать членство поставщиков, но если вы ищете простое решение, я думаю, что это должно сработать.