是否有一个C#库,其行为类似于Active Directory的权限和组?

时间:2011-05-16 13:39:28

标签: c# permissions active-directory authorization usergroups

我喜欢权限和组在Active Directory中的工作方式,但我不想将我的应用程序与AD绑定。

那里是否存在包含与AD相同功能的现有库?特别是,能够创建组,将用户分配到组,添加组的权限,以及查看用户或组的应用权限?

7 个答案:

答案 0 :(得分:1)

ActiveDirectoryMembershipProvider类继承MembershipProvider。

这意味着您不必将应用程序绑定到AD本身,而是绑定到MembershipProvider模型。这个模型在整个.net中使用,并且适用于内置控件和类。

这是一个示例

//Any of these will work
ActiveDirectoryMembershipProvider provider = new ActiveDirectoryMembershipProvider();
//SqlMembershipProvider provider = new SqlMembershipProvider();
//MyCustomMemebershipProvider provider = new MyCustomMemebershipProvider();

MembershipProvider membershipProvider = provider;

if (membershipProvider.ValidateUser("username", "password"))
{
    MembershipUser user = membershipProvider.GetUser("username", true);
}
else
{
    //Do something
}

我不是这个模型的专家,但是有一些经验,可以对MembershipProvider进行子类化,并实现IPrincipal,IIdentity等。这样做非常灵活,可以保持一致的架构

答案 1 :(得分:0)

您可以设置免费的LDAP服务器,例如OpenLDAP,并使用DirectoryServices来访问它,并使用任意数量的tools来管理LDAP目录。需要一些配置!

使用标准目录服务的好处在于过多的管理工具和支持任意数量的应用程序的能力。缺点是学习管理和查询目录。您是否有任何特殊原因不想使用AD?如果您正在使用Windows,我强烈建议您使用大多数异议。

答案 2 :(得分:0)

如果AD太重,您可以使用ADAM,这是一个轻型AD,您可以使用后者提供的ADSI Edit进行配置。这是good doc提供的,而onfiguration question则是SO。

此外,您可以使用相同类型的.NET API(例如System.DirectoryServices.AccountManagement)浏览ADAM。

答案 3 :(得分:0)

可以使用Microsoft-s AzMan-Authorization Manager作为Active目录的包装器。

它包含一个用于编程以请求权限的API

和gui(azman.msc),您可以在其中定义角色和映射权限并将其存储在xml文件中。

可以针对Active Directory进行配置。

答案 4 :(得分:0)

两件事。

首先:

如果要与目录进行交互,则必须在LDAP API之上进行编程。据我所知,ADSI正在开发顶级LDAP,但它似乎与Active Directory无关。我知道启动mono project的Novell会更多地编辑independant C# library on the top of LDAP

第二名:

权限,我的意思是访问控制列表(ACL)是非标准功能。权限在Active Directory中实现的方式与方式不同 它们在Sun e-Directory(特殊属性)中实现。例如,在OpenLDAP中,权限是在一种访问过滤器中实现的。

我可能(希望)是错的,但我从来没有听说过联合目录许可的图书馆。

答案 5 :(得分:0)

我读过的一个图书馆是Rhino Security。它似乎处理身份验证以及业务操作的授权,可能值得一看。我实际上并没有实现它,所以我不知道它有多好用。

答案 6 :(得分:0)

您可以使用授权管理器(AzMan),它是Windows Server的一部分。要从.NET集成它,Enterprize Library 5为您提供了类库类型。