0

我正在编写一个 Web 应用程序,并且正在尝试对管理员用户进行身份验证。我希望通过在我将域用户添加到的服务器上拥有一个本地组来做到这一点。我有一个名为的组ProductionManagers,我将具有管理员权限的人添加到该组中。其他用户只有查看权限。

我想要做的是搜索查询服务器上的 AD(对吗?),并找出当前登录的用户是否是ProductionManagers组的成员(这是服务器上的组,而不是域组)。

这样做的最佳方法是什么?或者,也许你有一个比我添加管理员的本地组更好的机制的建议?

4

1 回答 1

0

如果使用 ASP.NET 和表单身份验证,

WindowsPrincipal principal = new WindowsPrincipal(new WindowsIdentity("youruser@domain.com"));
if (principal.IsInRole("ProductionManagers"))
{
   // Authenticated
}

如果使用 ASP.NET 和 Windows 身份验证,

WindowsPrincipal principal = new WindowsPrincipal(WindowsIdentity.GetCurrent());
if (principal.IsInRole("ProductionManagers"))
{
   // Authenticated
}

如果使用 Java、PHP、Ruby 等其他工具,则需要调用 .NET API 或 Win32 API 来执行此操作。您不能简单地通过 LDAP 查询来检索该信息。原因是本地组的组成员信息实际上存储在本地计算机上,而不是 Active Directory 上。

您需要调用类似NetLocalGroupGetMembers的方法来从本地存储中检索组成员身份信息。

于 2012-06-23T19:54:57.537 回答