0

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

我知道您必须添加一个连接字符串,如ASP.NET MVC - Authenticate users against Active Directory 中所示,但需要输入用户名和密码。但是显示模型、视图和控制器以及 web.config 文件的某种示例将有很大帮助。

提前致谢

4

3 回答 3

0

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

使用 Intranet-Template 在您的项目中获取预配置的活动目录身份验证。可以在此链接中找到有关此身份验证方法的教程。它不是最新的,如果您对它不满意,只需谷歌搜索一个更好的。

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

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

希望有了这个我可以让你开始;-)

于 2013-01-29T20:24:50.353 回答
0

我将继续回答,因为我正在我们公司的内部网络应用程序上执行此操作,如果我做错了,这就是我要找出的方法。

当用户访问您的网站时,您将拥有 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
}
...

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

于 2013-01-29T19:21:44.443 回答
0

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

于 2013-01-29T22:49:41.707 回答