【问题标题】:ASP.NET application on local IIS express to authenticate users ussing active directory本地 IIS express 上的 ASP.NET 应用程序使用活动目录对用户进行身份验证
【发布时间】:2017-11-06 04:08:40
【问题描述】:

我正在尝试设置我的本地 asp.net Web 应用程序以使用 LDAP 连接字符串(活动目录域控制器)进行用户身份验证。

LDAP 连接字符串指向一个活动目录域控制器,可通过我正在使用的 VPN 连接访问。我也在使用一些公共 LDAP 目录进行测试。

我已将 IIS (7) 部署到我的本地工作站。我还按照说明 found here 创建了一个简单的 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 服务器

我可以通过 LDAP 浏览器使用上面代码中列出的信息(LDAP url、端口、基本 DN、connectionUsernameconnectionPassword)来浏览 AD。

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

如果是 VPN 2 Active Directory,我会得到:

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

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

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

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

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

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

attributeMapUsername="uid"

显然它不起作用。

我的问题如下:

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

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

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

【问题讨论】:

    标签: c# asp.net vb.net authentication active-directory


    【解决方案1】:

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

    在下方结帐 https://serverfault.com/questions/510016/how-can-i-assign-active-directory-permission-to-the-default-app-pool-identity

    【讨论】:

      猜你喜欢
      • 2016-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-05
      • 2010-09-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多