本地IIS上的ASP.NET应用程序用于验证用户使用的活动目录

tha*_*ili 12 c# vb.net asp.net authentication active-directory

我正在尝试设置我的本地asp.net Web应用程序以使用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>
...
Run Code Online (Sandbox Code Playgroud)

我使用的代码是示例应用程序链接上使用的代码.

A)如果是VPN Active Directory服务器

我可以使用LDAP浏览器使用上面代码中列出的信息(LDAP URL,端口,基本DN connectionUsername,connectionPassword)来浏览AD .

从IIS Web应用程序中,我只能为VPN 1 Active Directory绑定和验证用户.

在VPN 2 Active Directory的情况下,我得到:

无法与服务器建立安全连接

B)如果是公共LDAP服务器(v3)

我无法在两种情况下绑定+验证用户,接收:

无法与服务器建立安全连接

在这两种情况下,LDAP服务器都使用非AD标准对象属性,如下所示:

LDAP服务器配置的屏幕截图

所以在第一种情况下,我试图通过以下方式映射用户登录名:

attributeMapUsername="uid"
Run Code Online (Sandbox Code Playgroud)

显然它没有用.

我的问题如下:

A)在第二种情况下,我无法绑定到VPN2 AD,我可以ping和远程控制AD控制器.我也可以使用LDAP浏览器连接到AD控制器.我想知道AD控制器或其他东西是否可以阻止来自我本地IIS的请求.怎么了?

B)我可以使用ActiveDirectoryMembershipProvider绑定和使用所有类型的LDAP V3服务器吗?

如果是这样我在这里错过了什么?

Ric*_*e86 3

尝试将您的应用程序池身份更改为具有 Active Directory 访问权限的某个服务帐户

查看下面的 https://serverfault.com/questions/510016/how-can-i-assign-active-directory-permission-to-the-default-app-pool-identity