使用 ASP.NET MVC 3 和 c# 进行 Active Directory 身份验证

本文关键字:进行 Active Directory 身份验证 ASP NET MVC 使用 | 更新日期: 2023-09-27 17:56:37

我目前正在尝试创建一个针对AD对用户进行身份验证的网站,但我似乎找不到一个好的例子资源。首先,我只想让所有AD用户访问该网站。我有一台运行IIS和Active Directory角色的Windows 2008 r2服务器用于测试目的。

我知道您必须添加连接字符串,如 ASP.NET MVC - 根据 Active Directory 对用户进行身份验证,但需要输入用户名和密码。但是某种显示模型,视图和控制器以及web.config文件的示例将有很大帮助。

提前致谢

使用 ASP.NET MVC 3 和 c# 进行 Active Directory 身份验证

我将继续回答,因为我正是在我们公司的内部 Web 应用程序上这样做的,如果我做错了,这就是我将如何找出答案。

当用户访问您的网站时,您将拥有UserPrincipal.Current.SamAccountName。所以你需要做的就是这样的事情:

DirectoryEntry de = new DirectoryEntry("LDAP://" + adDomain);
DirectorySearcher ds = new DirectorySearcher(de);
ds.Filter = "(sAMAccountName=" + UserPrincipal.Current.SamAccountName + ")";
ds.PropertiesToLoad.Add("cn");
ds.PropertiesToLoad.Add("name");
ds.PropertiesToLoad.Add("mail");
SearchResult sr = ds.FindOne();
if (sr == null)
{
    // not found
}
...

因此,如果您没有返回搜索结果,则不会针对您的 AD 域对其进行身份验证......希望我做对了;)

为了使user2008963能够关闭/接受此问题,我将评论作为答案发布。

使用内联网模板获取项目中预配置的活动目录身份验证。有关此身份验证方法的教程,请访问此链接。它不是最新的,如果你对它不满意,只需谷歌搜索一个更好的。

如果您需要当前用户名及其在活动目录中的角色,您可以使用 User.Identity ,在此链接中描述。要在控制器/操作级别添加角色身份验证,您可以这样做:

[Authorize(Roles = "ADMIN")]
public class AdministrationController : Controller
{
    [Authorize(Roles = "SUPERADMIN")]
    public ActionResult SuperAdmin()
    {
        return View();
    }
}

希望有了这个,我能让你开始;-)

Wordpress插件Simple Intranet提供了一个免费的Active Directory插件插件,运行良好。 也就是说,如果您能够在自托管环境中支持WordPress。:)