使用 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文件的示例将有很大帮助。
提前致谢
我将继续回答,因为我正是在我们公司的内部 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。:)