【问题标题】:How to assign users the security roles associated with Active Directory如何为用户分配与 Active Directory 关联的安全角色
【发布时间】:2012-09-16 11:32:23
【问题描述】:

我的应用程序中的每个页面都有不同的访问角色(使用 Windows 身份验证),以使用 SqlRoleProvider 限制用户访问。所以要将用户添加到角色,我会去,

Roles.AddUserToRole(userName, roleName);

现在,我需要将公司的 AD 组集成到我的应用程序中,这样每个 AD 组也将被分配这些访问角色,并且某个 AD 组的用户将自动“继承”这些角色。

我的问题是:

我可以继续使用我的 SQL 表,如 aspnet_Users、aspnet_Roles 等吗?

如何整合 AD 组?以及如何将角色分配给 AD 组? (到目前为止,我可以使用 Directory Entry 检查用户所属的所有 AD 组)。

当用户使用 Windows 身份验证登录应用程序时,在我检查他们是否属于特定 AD 组后,我如何根据 AD 组“授予”或“分配”他们角色?

非常感谢您对这些问题的帮助。

【问题讨论】:

  • 我怀疑在这种情况下我需要实现自己的角色提供者?!请指教!

标签: asp.net active-directory roles asp.net-roles sqlroleprovider


【解决方案1】:

AD ASP.NET 成员资格和角色系统直接与 AD 相关联,您的数据库表将被忽略。 AD 组成为 ASP.NET 成员角色。

我的帖子的其余部分涉及直接修改 AD 组的应用程序:

您可以,但难度很大,但在这种情况下不建议这样做。

Active Directory 组成员资格由属于 Domain Admins 组的其他用户分配,或者被委派了将用户分配到其他组的权限。

为了从代码中执行此操作(使用 ADSI),您的程序需要在属于 Domain Admins 组成员或被委派该用户权限的用户身份下运行(或使用其模拟令牌)。

...这意味着您的程序突然受到信任,具有如果被黑客入侵或滥用,可能会在您的安全域中破坏的能力。我不建议这样做。

文档可在 MSDN 上找到:http://msdn.microsoft.com/en-us/library/windows/desktop/aa706022%28v=vs.85%29.aspx

【讨论】:

  • 非常感谢您的回复 - 我不太确定您回复的第二部分。我真的不需要修改 AD 组..我只需要允许属于某些 AD 组的用户具有某些“角色”(由我创建)。这些“角色”确定他们是否有权访问应用程序中的页面。你能建议你如何完成这个吗? :)
  • 只需检查.IsInRole() 方法。见这里:stackoverflow.com/questions/4366090/…
  • 嗯,也许我没有得到什么?
  • 当我使用 SqlRoleProvider 时,我使用 .IsInRole() 来检查用户是否是我创建的角色的一部分。但是,当我切换到使用 AD 组 (WindowsTokenRoleProvider) 时,它会忽略我创建的角色,而现在当我使用 .IsInRole() 时,它只会检查 AD 组。我想我想要做的是以某种方式将 AD 组链接到 SQL 角色?那么 AD 组中的用户可以分配给那些 SQL 角色吗?
  • 恐怕你不能默认这样做。您必须实现自己的包含该功能的 RoleProvider。
猜你喜欢
  • 1970-01-01
  • 2020-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多