用 ASP 冒充任何用户?

Impersonating any user with ASP?

我在这里问这个问题是因为也许它可以通过编程方式完成。因此,在我的工作中,我只是为我们的员工创建了一个门户网站,这样他们就可以找到 phone 其他同事的号码和诸如此类的东西,以及向 HR 发送查询以更改他们的私人信息。这是一个 ASP.NET MVC 项目,托管在我们的内部 IIS 服务器上。该门户可从我们公司外部访问,因此启用了基本身份验证和 Windows 身份验证。

作为开发人员和管理员,我们有时需要的是能够从我们的 Active Directory 中模拟现有用户。我知道您 可以 冒充现有用户,但是,我想知道的是,我是否可以使用某种方法或编程魔法,只传递类似首字母的内容(我们用作用户名),然后当我打开网站时门户网站将接受我作为该用户。

如果我可以在我的本地主机上执行此操作,而不是出于测试目的将其推送到现场,那就太好了。

我能做到吗?如果是这样,我将如何去做?我不确定如何在 C# 中执行此操作。

如果您需要这样做,我可以推荐的最好的方法是设置一个开发 AD 环境。您必须通过 VPN 进入该环境或通过其他方式专门进入该环境(例如,专用 WiFi SSID),因为它必须与您工作网络的其余部分完全隔离。

从那里,您基本上可以修改 AD 以基本上接管您喜欢的任何帐户,只需将密码更改为您知道的内容,然后通过该用户的凭据登录到该隔离网络上的客户端计算机。

总而言之,这不是一件容易的事,您可能想找到一种替代方法来测试您需要测试的内容。例如,仅仅在 AD 中设置一个模拟您需要测试的用户的测试帐户还不够吗?它可能有不同的公司电子邮件,但您可以分配所有相同的组和权限。

正如@Transcendant 在您问题下方的评论中所述,要按照您想要的方式进行(假设您可以),应用程序中必须存在巨大的安全漏洞。如果恶意用户能够找出 "test" 的方法,他们就可以在您的网站上冒充他们喜欢的任何身份并造成严重破坏。你可能会想,"how would they ever figure that out?",但不要低估现代黑客的聪明才智和毅力。默默无闻的安全性在现实中永远不会成功。