【问题标题】:asp.net form authentication with active directory and access control具有活动目录和访问控制的 asp.net 表单身份验证
【发布时间】:2014-05-06 03:48:12
【问题描述】:

我已经能够在tutorial 之后使用 Active Directory 创建一个有效的 ASP.NET Web 表单身份验证。

我有两个问题(其中一个可能是针对我的需要):

  1. 我在web.configmembership 元素中为ConnectionUsernameConnectionPassword 输入了我自己的用户名和密码。对我来说似乎很奇怪,当我验证域中的所有用户时,我需要将自己的用户名和密码放在 web.config 中。我想应该使用登录表单中的用户名和密码,除非我理解不正确。我们通常将web.config 放入membership 元素中的usernamepassword 是谁的?

  2. 在域中的数百个用户中,我需要向几个用户(假设其中 20 个)授予访问多个页面的权限。我阅读了有关 Active Directory 访问控制的信息,但我不想走这条路。在数据库中创建一个表,其中包含有权访问这些特殊页面的用户名列表,并匹配登录用户是否在该表中并授权如果是,这是否常见且明智?

感谢您的意见。

【问题讨论】:

  • 在这种情况下按角色进行身份验证可能会更容易,但这实际上取决于您的用例。如果您想要访问权限的绝对粒度,那么拥有一个用户表也是有意义的。
  • 感谢您的及时评论@ElGavilan。我正在考虑有一个特殊的表,因为我怀疑 AD 的角色仅由我要授权的一组用户拥有。我想避免必须在 AD 中创建一个特殊角色来适应这一点。但是感谢您确认创建用户表是有意义的。

标签: c# asp.net authentication active-directory web-config


【解决方案1】:

关于#1:

通常,您会为被识别为“应用程序”的数据库创建一个用户并指定这些凭据。 “应用程序”代表用户行事。

或者要在数据库级别限制访问,您不会在连接字符串中指定凭据并使用“impersonate=true;”而是连接字符串中的选项。

关于#2:

您可以通过允许和拒绝节点限制对 web.config 中特定用户的访问,例如:

<system.web>
<authorization>
  <allow users="MyCompanyDomain\John.Deere,MyCompanyDomain\Jane.Doore"/>
  <deny users="*"/>
</authorization>
</system.web>

这仅允许两个用户进入并拒绝所有其他用户。您也可以指定 Active Directory 组。

在此处阅读更多信息:http://msdn.microsoft.com/en-us/library/acsd09b0(v=vs.85).aspx

【讨论】:

  • 感谢@Domin8urMind,正是我想要的信息。我尝试了#1,但没有成功。请让我知道在哪里放置impersonate=true。我的连接字符串与 here 的连接字符串相同,只是它使用我自己的 ldap。
  • 我明白了。我也需要把它放在模拟工作&lt;validation validateIntegratedModeConfiguration="false"/&gt;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-15
  • 1970-01-01
相关资源
最近更新 更多