我看到我可以创建一个使用 NTLM 身份验证的 Intranet 身份验证。这几乎是我需要的。此外,我还需要检查用户是否在 AD 中的指定组中。
有没有一种简单的方法可以做到这一点?它适用于一个非常小的 Web 应用程序(开发 8-10 天)。
谢谢
我看到我可以创建一个使用 NTLM 身份验证的 Intranet 身份验证。这几乎是我需要的。此外,我还需要检查用户是否在 AD 中的指定组中。
有没有一种简单的方法可以做到这一点?它适用于一个非常小的 Web 应用程序(开发 8-10 天)。
谢谢
您可以使用参数将 Authorize 属性添加到相关控制器以检查组。
例如
[Authorize("mydomain/admin")]
public class MyController : Controller
{
}
您还需要在网站上启用 Windows 身份验证。
高温高压
硅
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。