【问题标题】:Active Directory authentication using ASP.NET MVC 3 and c#使用 ASP.NET MVC 3 和 c# 的 Active Directory 身份验证
【发布时间】:2013-01-29 19:06:10
【问题描述】:

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

我知道您必须添加一个连接字符串,如ASP.NET MVC - Authenticate users against Active Directory, but require username and password to be inputted 所示。但是显示模型、视图和控制器以及 web.config 文件的某种示例会很有帮助。

提前致谢

【问题讨论】:

标签: c# asp.net-mvc-3 active-directory


【解决方案1】:

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

当用户访问您的网站时,您将拥有 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 域进行身份验证...希望我做对了 ;)

【讨论】:

  • 请随意对我的回答投反对票,但如果你要这样做,至少解释一下它有什么问题。
  • 看我上面的评论。 Active Directory 身份验证已经实现,您可以使用 Intranet-Template 轻松添加它。
  • @jwillmer 我认为这不是否决答案的正当理由。皮特写的和你写的不一样。如果答案在技术上不准确或对问题没有帮助,则应拒绝投票。我没有足够的知识来确定前者,但这个答案确实试图做出贡献。我赞成投票以平衡。
【解决方案2】:

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

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

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

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多