0

我看到我可以创建一个使用 NTLM 身份验证的 Intranet 身份验证。这几乎是我需要的。此外,我还需要检查用户是否在 AD 中的指定组中。

有没有一种简单的方法可以做到这一点?它适用于一个非常小的 Web 应用程序(开发 8-10 天)。

谢谢

4

2 回答 2

1

您可以使用参数将 Authorize 属性添加到相关控制器以检查组。

例如

 [Authorize("mydomain/admin")]
 public class MyController : Controller
 {

 }

您还需要在网站上启用 Windows 身份验证。

高温高压

于 2012-10-08T09:25:54.587 回答
1
var ctx = new PrincipalContext(ContextType.Domain);

var userPrincipal = UserPrincipal.FindByIdentity(ctx, IdentityType.SamAccountName, userName);

 var groups = userPrincipal.GetGroups();

在这里,您拥有所有与当前用户相关联的第一级组。如果您想更深入地检查,例如第一级组所属的组,您必须编写递归函数,该函数将遍历整个组图。

var ctx = new PrincipalContext(ContextType.Domain);

var groupPrincipal = GroupPrincipal.FindByIdentity(ctx, IdentityType.SamAccountName, childGroup.SamAccountName);

var currentLevelGroups = groupPrincipal.GetGroups();

使用这三行,您可以获得指定组的父组。

您可以在每个步骤中检查给定组是否是收集组的一部分,如果是,则中断并返回 true。

于 2012-09-12T07:34:29.950 回答