Я пытаюсь настроить локальное веб-приложение asp.net на использование строки подключения LDAP (активного контроллера домена каталогов) для аутентификации пользователя.
Строка подключения LDAP указывает на активный контроллер домена каталогов, доступный через VPN-соединение, которое я использую. Также я использую некоторые общедоступные каталоги LDAP для тестирования.
Я развернул IIS (7) на свою локальную рабочую станцию. Я также выполнил инструкции найденные здесь, и я создал простую службу проверки подлинности форм Active Directory.
Я пытаюсь аутентифицировать своих пользователей на 4 разных LDAP-серверах (2 из AD, 2 без AD)
Вот несколько частей моего web.config
:
<connectionStrings>
<!--<add name="ADConnectionString1" connectionString="LDAP://x01.x02.x03.x04:389/DC=NPAPAN,DC=local" />--> <!-- Active Directory in VPN1 -->
<add name="ADConnectionString4" connectionString="LDAP://y01.y02.y03.y04:389/DC=corporate,DC=mycompany,DC=com"/> <!-- Active Directory in VPN2 -->
<!--<add name="ADConnectionString2" connectionString="LDAP://ldap.forumsys.com:389/dc=example,dc=com"/>--> <!-- LDAP server 1 public -->
<!--<add name="ADConnectionString3" connectionString="LDAP://zflexldap.com:389/dc=example,dc=com"/>--> <!-- LDAP server 1 public -->
</connectionStrings>
...
<authentication mode="Forms">
<forms
name=".ADAuthCookie"
timeout="10" requireSSL="false" protection="None"/>
</authentication>
....
<membership defaultProvider="MyADMembershipProvider">
<providers>
<!--<add name="MyADMembershipProvider1"
type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="ADConnectionString"
connectionUsername="NPAPAN\testadmin"
connectionPassword="zzzzzzz"
attributeMapUsername="sAMAccountName"/>-->
<add name="MyADMembershipProvider"
type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0,Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="ADConnectionString"
connectionUsername="CORPORATE\_ADMIN_USER"
connectionPassword="cccccccc"
attributeMapUsername="sAMAccountName" />
<!--<add name="MyADMembershipProvider2"
type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="ADConnectionString"
connectionUsername="cn=read-only-admin,dc=example,dc=com"
connectionPassword="password"
attributeMapUsername="uid" />-->
<!--<add name="MyADMembershipProvider"
type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="ADConnectionString3"
connectionUsername="cn=ro_admin,ou=sysadmins,dc=zflexsoftware,dc=com"
connectionPassword="zflexpass" />-->
</providers>
</membership>
<authorization>
<deny users="?"/>
<allow users="*"/>
</authorization>
...
Используемый мной код - тот, который используется в ссылке из примера приложения.
A) В случае серверов VPN Active Directory
Я могу просматривать AD с помощью информации (LDAP url, port, base DN, connectionUsername
, connectionPassword
), перечисленных в коде выше с помощью браузера LDAP.
Из веб-приложения IIS я могу привязывать и проверять подлинность пользователей только для VPN 1 Active Directory.
В случае VPN 2 Active Directory я получаю:
Невозможно установить безопасное соединение с сервером
B) В случае открытых LDAP-серверов (v3)
Я не могу связывать + аутентифицировать пользователей в обоих случаях, получая:
Невозможно установить безопасное соединение с сервером
В обоих случаях сервер LDAP использует атрибуты не стандартных AD-объектов, как показано ниже:
Итак, в первом случае я попытался отобразить имя пользователя для входа:
attributeMapUsername="uid"
Очевидно, что это не сработало.
Мои вопросы таковы:
A) Во втором случае, когда я не могу привязываться к VPN2 AD, я могу ping и telnet контроллер AD. Я также могу подключиться к контроллеру AD с помощью браузера LDAP. Мне интересно, может ли контроллер AD или что-то еще блокировать запросы из моего локального IIS. Что происходит?
B) Могу ли я использовать ActiveDirectoryMembershipProvider
для привязки и использования серверов LDAP V3 всех типов?
Если да, то что мне здесь не хватает?