AD LDS с аутентификацией ASP.NET формы - PullRequest
2 голосов
/ 19 января 2010

Я получаю это исключение:

Сообщение об ошибке парсера: Контейнер, указанный в строке подключения, не существует

А вот мой случай:

У меня есть веб-приложение с 2 страницами Default.aspx и Login.aspx. Последний содержит контроль входа в систему. Приложение настроено для работы с экземпляром AD LDS в качестве хранилища членства.

Вот некоторые интересующие вас разделы в web.config

  <authentication mode="Forms">
    <forms name=".AuthCookie" loginUrl="Login.aspx" timeout="10" />
  </authentication>
  <authorization>
    <deny users="?" />
    <allow users="*" />
  </authorization>
  <membership defaultProvider="MyDSProvider">
    <providers>
      <add name="MyDSProvider" 
           type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
           applicationName="ADSecWebApp"
           connectionStringName="MyDSConn"
           connectionUsername="CN=Admin,CN=Users,CN=MyOrg,DC=MyDomain,C=CA"
           connectionPassword="Welcome1"
           connectionProtection="None"
           />
    </providers>
  </membership>

Затем я установил экземпляр AD LDS на моей машине.

AD LDS настроен так, чтобы иметь один раздел приложения «CN = MyOrg, DC = MyDomain, C = CA».

В этом разделе я создал контейнер "CN = Users, CN = MyOrg, DC = MyDomain, C = CA"

Под этим контейнером я создал двух пользователей: Admin и JohnS. Оба были включены и настроены с паролями («Welcome1» в случае «Admin»)

Более того, администратор был настроен в качестве члена «CN = Администраторы, CN = Роли, CN = MyOrg, DC = MyDomain, C = CA» (Я нашел несколько статей в сети, в которых предлагалось, что при использовании connectionProtection = "None" в разделе конфигурации ADMembershipProvider учетная запись Windows не может использоваться, вместо этого следует использовать учетную запись AD, которая имеет права администратора для экземпляра AD, используемого для подключения.)

Кроме того, у меня Windows 7, IIS7, VS 2008 SP1, .NET 3.5

Может кто-нибудь дать мне несколько советов о том, что не так? Я много исследовал, решал ошибки одну за другой, но, похоже, я застрял с этим.

Буду также признателен за некоторые пояснения о том, почему, если мне дают решение, потому что я новичок.

Заранее спасибо

Юлиан

1 Ответ

5 голосов
/ 19 января 2010

С помощью коллеги я выяснил, в чем проблема. Очевидно, что когда я добавил своего пользователя Admin AD в роль администратора AD (=> CN-Roles => CN-Administrators => Свойства => select {member} => нажмите Добавить DN => добавить моего администратора), я пропустил, чтобы сохранить их или что-то еще пошло не так; В любом случае, мой пользователь-администратор не был сохранен в качестве члена Администрации.

Я использовал ldp.exe, чтобы найти причину проблемы: в некотором смысле я смог подключиться к своему экземпляру, а затем привязать сеанс к своему пользователю CN = Admin, хотя я ничего не видел в древовидное представление, которое намекнуло, что CN = Admin это еще не Администратор.

Еще одна вещь, которая была опущена: мне пришлось установить userPrincipalName учетной записи, которую я хотел войти в мое безопасное веб-приложение, потому что имя, которое я использовал при создании учетной записи AD CN = JohnS, фактически не используется ActiveDirectoryMembershipProvider при проверке пользователя. Я использовал электронное письмо, например имя, john.smith@mail.com для userPrincipalName, и именно это и нужно использовать для входа в веб-приложение.

После всего этого с моим примером AD-LDS & ASP.NET форм-аутентификации все прошло нормально.

Надеюсь, кто-то найдет это полезным.

Спасибо

Юлиан

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...