我看到我可以创建一个使用NTLM身份验证的Intranet身份验证。这几乎就是我的需要。此外,我还需要检查用户是否在AD中的指定组中。
有一种简单的方法吗?它适用于非常小的Web应用程序(开发人员8-10天)。
谢谢
答案 0 :(得分:1)
var ctx = new PrincipalContext(ContextType.Domain);
var userPrincipal = UserPrincipal.FindByIdentity(ctx, IdentityType.SamAccountName, userName);
var groups = userPrincipal.GetGroups();
这里有hava所有第一级组,当前用户关联。如果要更深入地检查,例如第一级组所属的组,则必须编写递归函数,该函数将遍历整个组图。
var ctx = new PrincipalContext(ContextType.Domain);
var groupPrincipal = GroupPrincipal.FindByIdentity(ctx, IdentityType.SamAccountName, childGroup.SamAccountName);
var currentLevelGroups = groupPrincipal.GetGroups();
使用这三行,您可以获得指定组的父组。
您可以检查每个步骤是否给定的群组是收集群组的一部分,如果是,则只需中断并返回true。
答案 1 :(得分:1)
您可以使用参数将Authorize属性添加到相关控制器以检查该组。
例如
[Authorize("mydomain/admin")]
public class MyController : Controller
{
}
您还需要在网站上启用Windows身份验证。
HTH
的Si