2015-08-18 7 views
1

Я создаю интернет-сайт для конфигурации наблюдения: - общественный сайт - пользователи должны аутентифицировать Agains Active Directory - роли servered с помощью 3th партийной системы ERP, а также с использованием AD для аутентификацияUmbraco не аутентичности против Active Directory

То, что я сделал Так что я пытался следовать этому руководству (https://our.umbraco.org/wiki/how-tos/membership-providers/active-directory-membership-provider) для аутентификации и написал поставщик роли custsom для роли ERP. Я использовал встроенный шаблон для формы входа.

Роль частично работает нормально. Аутентификация не выполняется.

Проблема Похоже, что Umbraco все еще использует UmbracoMembershipProvider. Когда я создаю члена в umbraco, я могу войти с учетными данными umbraco. Когда я пытаюсь использовать учетные записи AD, он не будет аутентифицироваться.

Я попытался установить Измените строку подключения LDAP для использования не существующего подразделения или 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. Я запускаю Umbraco 7.2.8 в Visual Studio/IISExpress. Я использовал пакет Nuget Umbraco.

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> 
 
}

ответ

0

После нескольких часов поисков я наконец решить эту. Кажется, что UmbLoginController всегда использует UmbracoMembershipProvider. Это, на мой взгляд, не прозрачно.

Во всяком случае, я создал новый контроллер поверхности, как упомянуто here, и теперь все работает отлично.

+0

Ну, выяснилось, что этот ответ не работал вообще, как я заметил, пока вы живете с сайтом: S. У AD должно быть имя «UsersMembershipProvider». Поэтому вам нужно заменить исходную строку. – Nicow

Смежные вопросы