AD LDSを使用しているため、認証モード「Windows」が役に立たないと思います。私はあなたがログインビュー(ここでは/アカウント/ログオン)を作成し、認証モード "フォーム"を使用する必要があると信じています。
は、ユーザがSystem.DirectoryServices.AccountManagementを使用することによって達成することができる認証のweb.configに
<authentication mode="Forms">
<forms name=".ADAuthCookie" loginUrl="~/Account/Logon" timeout="30" slidingExpiration="false" protection="All"/>
</authentication>
<authorization>
<deny users="?"/>
</authorization>
をfollowwingを入力してください。コントローラのコードは、次のようになります。
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 });
}
これは、認証のみを行い認証を解決することに注意してください。
また、メンバーシッププロバイダを使用することもできますが、簡単な解決策を探している場合は、このトリックを行うべきだと思います。
カスタムプロバイダを作成する必要はありません。あなたは他のLDAPツールを使ってそれに接続できますか? –