我有一个网站用于某种管理。它只能在域网络中使用,并且必须非常安全。这就是为什么我决定使用现有的域身份验证。我已经打开了Windows身份验证和模拟。现在,当我打开此网站时,该用户已获得WindowsIdentity
的授权。
第一个问题是如何在域组内安全地检查用户的身份。我的意思是,如果用户使用非域帐户进行身份验证,我不应该让用户进入
例如,用户使用本地计算机管理员用户登录Windows,打开我的网站,User.Identity.IsAuthenticated
是否为真(因为他是Windows用户,无论如何)?也许,我应该检查某种证书,来源或所有者。如何确保我们的用户属于我们的域并且它不是入侵者?
第二个问题是:我需要确定用户是否属于某个组。我有一个组的ID:S-1-5-21-1455132813-...
。使用此ID识别组是否可以?我只是不确定这些ID是多么静态。也许,有一种更合适的方式来检查它。
现在,我这样做:
private readonly _allowedGroupId; // read from a config
var wi = WindowsIdentity.GetCurrent();
if (wi.IsAuthenticated && wi.Groups.Any(x => x.Value == _allowedGroupId))
{
// authorized
}
答案 0 :(得分:3)
要检查Windows角色,您应该使用角色管理器:
<roleManager enabled="true" defaultProvider="WindowsProvider">
<providers>
<clear/>
<add name="WindowsProvider" type="System.Web.Security.WindowsTokenRoleProvider" />
</providers>
</roleManager>
并检查代码中的角色:
Roles.IsUserInRole(@"domain\active_directory_role_name")