将特定域的 ASP.NET 模拟用户添加到 windows 身份验证

Posted

技术标签:

【中文标题】将特定域的 ASP.NET 模拟用户添加到 windows 身份验证【英文标题】:Adding ASP.NET impersonation users of specific domain to windows authentication 【发布时间】:2015-09-03 19:48:23 【问题描述】:

我在公司的 Windows Server 2008 (IIS 7.5) 中安装了 MVC4 应用程序。要远程访问 Windows 服务器,我们使用(xxxxDMZ\用户名,密码),它们与访问网站特定页面所需的 Windows 身份验证相同。 我的问题不是每个人都有这个“xxxxDMZ”帐户,所以他们无法访问该页面,我想要做的是添加他们的 Windows 登录凭据以访问该页面(仅通过添加用户名),这将是 'xxxx\用户名'。

我读到为了做到这一点,我必须使用模拟,但我找不到明确的方法来实现它。

非常感谢任何帮助。

非常感谢您!

【问题讨论】:

模拟用于运行您网站的 IIS 进程。从我正在阅读的内容来看,您希望 DomainA 中的用户登录到托管在 xxxxDMZ 网络服务器上的网站。 【参考方案1】:

这是您可以使用的功能。但是域需要可以从 DMZ 访问...这意味着打开 DMZ 和域控制器之间的端口。

public bool ValidateUser(string userName, string password)
        
            bool validation;
            try
            
                LdapConnection ldc = new LdapConnection(new LdapDirectoryIdentifier((string)null, false, false));
                NetworkCredential nc = new NetworkCredential(userName, password, "DOMAIN NAME HERE");
                ldc.Credential = nc;
                ldc.AuthType = AuthType.Negotiate;
                ldc.Bind(nc); // user has authenticated at this point, as the credentials were used to login to the dc.
                validation = true;
            
            catch (LdapException)
            
                validation = false;
            
            return validation;
        

参考:LDAP Authentication in ASP.Net MVC

【讨论】:

非常感谢您的回答。目前我正在使用这种方式来授权控制器,我不确定我将如何实现该功能以及如何在托管网站的DMZ域和用户域之间打开端口。 [授权] public class TheNoticesController : Controller public ActionResult Notices() return View();

以上是关于将特定域的 ASP.NET 模拟用户添加到 windows 身份验证的主要内容,如果未能解决你的问题,请参考以下文章

使用 ASP.NET 表单身份验证的用户模拟

将生成的 html 文档保存到 ASP.NET 中的特定文件夹

identity与ASP.NET 模拟

在 asp.net 核心中使用返回 url

ASP.NET MVC 保存到客户端上的特定文件夹

提示 iPhone 用户将用 Asp.Net MVC 开发的网页添加到主屏幕