【发布时间】:2015-08-18 18:31:01
【问题描述】:
我正在为以下配置创建一个互联网站点: - 公共网站 - 用户需要再次验证活动目录 - 角色由第 3 方 ERP 系统提供服务,也使用 AD 进行身份验证
我做了什么 因此,我尝试按照本指南 (https://our.umbraco.org/wiki/how-tos/membership-providers/active-directory-membership-provider) 进行身份验证,并为 ERP 角色编写了自定义角色提供程序。我为登录表单使用了内置模板。
角色部分工作得很好。身份验证没有。
问题 似乎 Umbraco 仍在使用 UmbracoMembershipProvider。当我在 umbraco 中创建成员时,我可以使用 umbraco 凭据登录。当我尝试任何 AD 帐户时,它不会进行身份验证。
我试过了 更改 LDAP 连接字符串以使用不存在的 OU 或 CN。它给了我错误,因此在过程中的某个地方建立了与 AD 的连接。
我也试过 RB.ActiveDirectoryProviders。结果一样。
我没有抛出任何异常,只是“用户名或密码无效”。日志说:
2015-08-19 08:45:20,764 [126] INFO Umbraco.Core.Security.UmbracoMembershipProviderBase - [P6460/T133/D8] Login attempt failed for username nico from IP address ::1, the user does not exist
我最好的猜测是我犯了一些配置错误。
那么我如何将 Active Directory 用作唯一的 MembershipProvider?
欢迎任何帮助。
我的设置:
带有 iis/umbraco/VS2012 的本地机器运行带有 AD 的虚拟 PC。我在 Visual Studio/IISExpress 中运行 Umbraco 7.2.8。我使用了 Umbraco 的 Nuget 包。
web.config
<connectionStrings>
<add name="ADConnectionString" connectionString="LDAP://192.168.2.50/dc=XXX,dc=YYY" />
</connectionStrings>
<membership defaultProvider="ADMembershipProvider" userIsOnlineTimeWindow="15">
<providers>
<clear />
<add name="UmbracoMembershipProvider" type="Umbraco.Web.Security.Providers.MembersMembershipProvider, Umbraco" minRequiredNonalphanumericCharacters="0" minRequiredPasswordLength="4" useLegacyEncoding="true" enablePasswordRetrieval="false" enablePasswordReset="true"
requiresQuestionAndAnswer="false" defaultMemberTypeAlias="Member" passwordFormat="Hashed" />
<add name="UsersMembershipProvider" type="Umbraco.Web.Security.Providers.UsersMembershipProvider, Umbraco" minRequiredNonalphanumericCharacters="0" minRequiredPasswordLength="4" useLegacyEncoding="true" enablePasswordRetrieval="false" enablePasswordReset="true"
requiresQuestionAndAnswer="false" passwordFormat="Hashed" />
<add name="ADMembershipProvider" type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="ADConnectionString" connectionUsername="[USER]" connectionPassword="[PASSWORD]"
attributeMapUsername="sAMAccountName" />
</providers>
</membership>
@using (Html.BeginUmbracoForm<UmbLoginController>("HandleLogin"))
{
<fieldset>
<legend>Login</legend>
@Html.ValidationSummary("loginModel", true)
@Html.LabelFor(m => loginModel.Username)
@Html.TextBoxFor(m => loginModel.Username)
@Html.ValidationMessageFor(m => loginModel.Username)
<br />
@Html.LabelFor(m => loginModel.Password)
@Html.PasswordFor(m => loginModel.Password)
@Html.ValidationMessageFor(m => loginModel.Password)
<br />
<button>Login</button>
</fieldset>
}
【问题讨论】:
标签: authentication active-directory umbraco umbraco7