使用VPN的ASP.NET活动目录成员身份

时间:2015-01-12 17:02:19

标签: asp.net-web-api asp.net-membership vpn activedirectorymembership

我尝试使用ASP.NET Active Directory成员资格提供程序来验证ASP.NET Web API中的用户。此活动目录位于不同的服务器上,我只能通过VPN连接到该服务器。以下是我正在使用的代码:

的web.config:

<connectionStrings>    
<add name="ADConnectionString" connectionString="LDAP://vpn.servername.com/dc=vpn,dc=servername,dc=com"/>
</connectionStrings>
<system.web>
<compilation debug="true" targetFramework="4.5.1" />
<httpRuntime targetFramework="4.5.1" />
<membership defaultProvider="AspNetActiveDirectoryMembershipProvider">
  <providers>
    <add name="AspNetActiveDirectoryMembershipProvider"
         type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0,Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
         connectionStringName="ADConnectionString"
         connectionProtection="Secure"
         attributeMapUsername="sAMAccountName"
         enableSearchMethods="false" />
  </providers>
</membership>

C#:

System.Web.Security.Membership.ValidateUser(username, password);

它抛出一个异常,它无法与服务器建立安全连接,而最内部的异常消息是服务器无法运行。我也使用Cisco AnyConnect连接到此VPN并且工作正常。

我有什么遗失的吗?

1 个答案:

答案 0 :(得分:0)

我偶尔会遇到类似的问题。我的经验是,它通常是连接字符串的名称解析问题。

  1. 检查最内层的异常以查看是否出现The server is not operational异常。如果是这样,您对vpn.servername.com的名称解析可能无法解析为您的Active Directory服务器;
  2. 尝试使用该名称进行ping操作以查看它是否已解析;
  3. 确保您的服务器名称是AD域控制器。对我来说,名称看起来像servername.domain.local。