このエラーが発生しました:メンバーシップの資格情報の検証に失敗しました。フォームベースの認証を使用してASP.NETアプリケーションでActiveDirectoryユーザーにログインしようとしたとき。
私は次のように複雑な設定をしています:
メンバーシップリポジトリとして、Active Directoryライトウェイトディレクトリサービス(Ad LDS)、別名ADAMを使用しています。プロキシユーザーを使用してActiveDirectoryにバインドし、adamsyncを完了しました。ADLDSのSSL証明書を構成しました。LDP.exeを使用してADLDSに接続している間、AD LDSユーザーまたはADユーザーの両方と接続/バインドできるため、プロキシは問題ありません。私のASP.NETアプリケーションはADLDSと通信し、フォームベースの認証を使用してADLDSユーザーと正常にログインできます。
しかし、ASP.NETアプリケーションを使用してADユーザーでログインできません。何が欠けていますか?
これが私のweb.configのプロバイダーセクションです:
<add name="MyADConnectionString"
connectionString="LDAP://localhost/OU=Users,DC=PreuveConcept,DC=local" />
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>
<membership defaultProvider="AspNetActiveDirectoryMembershipProvider">
<providers>
<clear/>
<add name="AspNetActiveDirectoryMembershipProvider"
type="System.Web.Security.ActiveDirectoryMembershipProvider"
connectionStringName="MyADConnectionString"
connectionProtection="Secure"
enableSearchMethods="true"/>
</providers>
</membership>
これが私のログインアクションです(デフォルトのMVC AcountControler):
[HttpPost]
public ActionResult LogOn(LogOnModel model, string returnUrl)
{
if (ModelState.IsValid)
{
if (Membership.ValidateUser(model.UserName, model.Password))
{
FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")
&& !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))
{
return Redirect(returnUrl);
}
else
{
return RedirectToAction("Index", "Home");
}
}
else
{
ModelState.AddModelError("", "The user name or password provided is incorrect.");
}
}
// If we got this far, something failed, redisplay form
return View(model);
}