【发布时间】:2013-12-13 17:39:09
【问题描述】:
目前我有一些使用表单身份验证的项目,并且我可以让用户使用他们的 AD 帐户登录。我一直在做的方式,很容易。
web.config
//first I set up the connection string to the active directory account
<connectionStrings>
<add name="ADService" connectionString="LDAP://ourDomainController/OU=stores,DC=DOMAIN,DC=net" />
<ConnectionStrings>
//Then I add the membership provider for active directory
<membership defaultProvider="AspNetActiveDirectoryMembershipProvider">
<providers>
<clear />
<!--Membership provider for Active Directory-->
<add name="AspNetActiveDirectoryMembershipProvider" type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="ADService" attributeMapUsername="sAMAccountName" />
</providers>
</membership>
我无法使用 Active Directory 用户名和密码登录。但是,我无法拒绝特定群体访问网站的某些部分。这种方式搜索整个活动目录,如果您是其中的一部分,则可以登录。在一个应用程序中,我会将用户插入 SQL 表,然后授予用户访问网站的权限,如果他们是其中的一部分,依此类推的 sql 表。这很好用,但是,该应用程序正在快速增长,有许多用户,我想利用 Active Directory 中的组。过去几天我一直在研究和试验,但我没有找到任何解决方案。许多人使用过 Windows 身份验证,但它在视觉上不那么吸引人,而且在这个阶段,可能只会让最终用户吓坏几周。 (该应用程序分布在 13 个不同的商店中)我还研究了这个 article... 并在测试应用程序中尝试了这个解决方案,但没有任何运气。在自定义 ADRoleProvider 中不断收到错误提示“对象引用未设置为对象的实例”。
var root = new DirectoryEntry(WebConfigurationManager.ConnectionStrings[ConnectionStringName].ConnectionString, ConnectionUsername, ConnectionPassword);
我只是想知道是否有人知道正确执行此操作的方法或执行此操作的不同方法。任何建议都是有帮助的!谢谢!
【问题讨论】:
标签: c# asp.net active-directory forms-authentication