如何从mvc应用程序访问内部网站点的内容?

时间:2013-07-04 19:14:51

标签: asp.net asp.net-mvc authentication impersonation

我有一个使用表单身份验证的MVC4 ASP.NET应用程序。我有一个iframe的视图,我想显示来自使用域身份验证的本地Intranet站点的内容。来自MVC网站的用户无权访问本地服务器,因此我需要模拟域用户以显示本地内容。 我首先尝试创建webRequest,但它没有保存凭据。 我在任一服务器上都没有管理员权限,因此无法更改iis或其他设置。 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

通常,在通过互联网访问域时,冒充域用户是非常糟糕的。如果内部网站点没有被公开,那么很可能是因为某种原因这样做了,你可能会通过免费提供的网站公开资源来进行攻击。

更安全的方法是复制您希望公开的Intranet站点的逻辑,并将其功能精心地合并到外部MVC应用程序的页面上。它的工作量更大,但它可能不会让你成为黑客或脚本小子能够窃取有价值数据的原因。

话虽这么说,通过身份验证模拟Web请求的方法是创建一系列HttpRequest对象,并存储cookie信息。这就是所有身份验证的发生方式,只要您将Cookie从请求传递到请求,您就应该有自由的统治权。但除非您完全确定您的公司意识到潜在的灾难,并且希望Intranet应用程序的维护人员知道他们以这种方式暴露,否则不要这样做。

public function badIdea() {
  WebRequest request = WebRequest.Create (
    "intranet-login-url");
  request.Credentials = CredentialCache.DefaultCredentials;
  using( WebResponse response = request.GetResponse ()) {
    CookieCollection authCookies = response.Cookies;
  }

  // now pass authCookies' contents to each future WebRequest's cookie collection
  //  to allow all manner of unscrupulous individuals to access your valuable
  //  company sekrits!
}