我试图通过托管在非域名主机上的iis / asp.net应用程序让ActiveDirectory的本地域用户进行身份验证。
这是设置
MYDOMAIN
10.10.1.1
(不在MYDOMAIN
)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
)
我做错了什么,如何调试这样的问题?
答案 0 :(得分:1)
基本身份验证不了解ASP.NET中的成员资格提供程序。如果您想这样做,那么您需要编写一个使用Mebership API的自定义基本身份验证模块(ValidateUser,RoleProvider等)。幸运的是,这样做非常容易,几年前我们写了一个关于如何做到这一点的示例,看看这个用于端到端代码和它的配置(请注意,在示例中注释了对成员资格的调用,但你可以取消注释这一行):
http://www.iis.net/learn/develop/runtime-extensibility/developing-a-module-using-net