对不起,如果之前已询问过此问题,但我已搜索Google和此网站,但无法找到针对初学者的完整工作。我试图编写一个登录页面,使用ASP.NET 2对活动目录组进行身份验证。我发现了各种文章,但他们似乎都缺乏新手的关键信息。我设法拼凑了一个登录页面,它可以与几个活动目录登录一起工作,但我无法将其限制为仅限属于特定活动目录组成员的用户。 我的web.config包含以下内容:使用ASP.NET 2中的活动目录组登录表单
<connectionStrings>
<add name="ADConnectionString" connectionString="LDAP://domainname.local/DC=domainname,DC=local" />
</connectionStrings>
<authentication mode="Forms">
<forms
loginUrl="Login.aspx"
name=".ADAuthCookie" timeout="1000" />
</authentication>
<authorization>
<allow roles="DOMAINNAME\group"/>
<deny users="?"/>
</authorization>
<membership defaultProvider="MyADMembershipProvider">
<providers>
<add name="MyADMembershipProvider"
type="System.Web.Security.ActiveDirectoryMembershipProvider,
System.Web, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="ADConnectionString"
attributeMapUsername="sAMAccountName"/>
</providers>
</membership>
我有匿名的真实域名,但我相信这部分工作,它让我登陆,如果我使用:
<allow roles="DOMAINNAME\username"/>
<deny users="?"/>
的其余部分项目由具有WebControls.Login控制和在Page_Load函数以下一个Default.aspx页面一个页面的Login.aspx的证明登录已工作:
Response.Write("Hello, " + Server.HtmlEncode(User.Identity.Name));
我已经试过
<allow roles="DOMAINNAME\group"/>
<deny users="*"/>
但这似乎否认每个人。
我错过了什么?
下面的文章将描述你在找什么? http://msdn.microsoft.com/en-us/library/ff649227.aspx –
感谢文章@ miika-l,它仍然有一些差距 - 我已经设法克服大部分但仍然不能了解如何只允许访问指定活动目录组中的用户。看起来我应该可以从web.config中的节点或通过在Application_AuthenticateRequest函数中迭代组列表来完成它,但我不知道如何执行。任何指针? 我也尝试了ASP.NET 2版本的文章http://msdn.microsoft.com/en-us/library/ff650308.aspx但有类似的问题。 –
nigelhooper
在第四步中,他们构建了用户所属的所有组的字符串。因此,您可以修改此函数以搜索您正在查找的组,或者只搜索该函数返回的字符串,就像它在doc中一样(“GetGroups方法将返回组列表作为管道分隔字符串”) 。这个方法与web.config设置没有任何关系,但是,如果你真的设置了这个方法? –