在.Net中使用Active Directory进行授权

时间:2011-08-09 15:28:52

标签: .net active-directory

除了使用System.DirectoryServices.AccountManagement执行基本AD功能的简单代码示例之外,是否有一般指导方针,或者有人可以发布自己将.net与应用程序集成?我有一个独立的项目数据库。

可以将项目分配给用户。我应该在数据库中存储UserPrincipleName,Distinguished name,GUID还是SID?

项目的某些部分仅限于特定部门的员工。我是否为每个部门创建一个简单的AD组?我应该支持某种本地缓存还是多次IsMemberOf调用?

我应该如何处理像CanDoSomething这样的细化权限。我应该嵌套更多的团体吗?

1 个答案:

答案 0 :(得分:1)

如果您的应用程序和使用它的用户都在同一个局域网上,我肯定会建议使用直接的Windows身份验证。

那是:

  • 为您应用中的每个用户组(常规用户,演示用户,管理员)创建Windows / AD安全组 - 这些组可由任何Windows / AD管理员管理和处理(无需特殊工具/ UI需要的东西)

  • 在您的代码中,使用当前IsInRole上的WindowsPrincipal方法来确定当前用户是否处于特定角色(或不是)

  • 更精细的权限:这完全取决于您;有一些像AzMan这样的“开箱即用”的解决方案,但似乎没有一个真正被使用过 - 我们大多是“推出自己的”,采用某种两层或三层方法(用户 - 配置文件 - 权限)在数据库中管理并在我们的应用程序中管理

AD对象的名称可能会发生变化 - 因此我不会将其用作我唯一且稳定的参考。 GUID或SID都是固定的,不会改变 - GUID更是如此(SID可以在某些情况下合并,因此可能会改变 - 更多的是组,但它仍然可能)