如何在ASP.NET中确保ActiveDirectory认证
本文关键字:确保 ActiveDirectory 认证 NET ASP | 更新日期: 2023-09-27 18:09:01
我有一个用于某种管理的网站。它只能在域网络中使用,并且必须非常安全。这就是我决定使用现有域身份验证的原因。我已经打开了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
}
要检查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")