使用ActiveDirectoryMembershipProvider进行基本身份验证

时间:2015-11-10 23:49:33

标签: asp.net iis active-directory basic-authentication

我试图通过托管在非域名主机上的iis / asp.net应用程序让ActiveDirectory的本地域用户进行身份验证。

这是设置

  • local domain = MYDOMAIN
  • iis host = 10.10.1.1(不在MYDOMAIN
  • ActiveDirectory LDAP连接字符串= LDAP://10.20.1.1/DC=MYDOMAIN,DC=local

的web.config

<connectionStrings>
    <add name="ADConnectionString" connectionString="LDAP://10.20.1.1/DC=MYDOMAIN,DC=local" />
</connectionStrings>

...

<authorization>
  <allow users="*"/>
  <deny users="?"/>
</authorization>
<membership defaultProvider="ADMembershipProvider">
  <providers>
    <add
       name="ADMembershipProvider"
       type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
       connectionStringName="ADConnectionString"
       connectionUsername="MYDOMAIN\Administrator"
       connectionPassword="password"
       />
  </providers>
</membership>

iis设置

  • 启用基本身份验证
  • 禁用所有其他身份验证方法

但是,使用此设置,在浏览器身份验证提示中输入凭据时,用户不会通过身份验证(用户名输入为MYDOMAIN\user - 如果没有MYDOMAIN\部分则无更改。我甚至没有看到iis连接到AD服务器(10.20.1.1

我做错了什么,如何调试这样的问题?

1 个答案:

答案 0 :(得分:1)

IIS中的

基本身份验证不了解ASP.NET中的成员资格提供程序。如果您想这样做,那么您需要编写一个使用Mebership API的自定义基本身份验证模块(ValidateUser,RoleProvider等)。幸运的是,这样做非常容易,几年前我们写了一个关于如何做到这一点的示例,看看这个用于端到端代码和它的配置(请注意,在示例中注释了对成员资格的调用,但你可以取消注释这一行):

http://www.iis.net/learn/develop/runtime-extensibility/developing-a-module-using-net