从同一站点内访问受密码保护的站点上的.ASPX页面

时间:2013-08-20 18:23:30

标签: asp.net security

我们最近将我们的登台服务器迁移到了新的托管服务提供商,并在托管帐户控制面板中设置了表单身份验证,以便抓取工具和不受欢迎的访问者无法访问它。

现在我们发现网站的逻辑中至少有一个区域由于HTTP 401 Unauthorized而失败。

该网站的一部分可为网站用户生成PDF。转换是从HTML到PDF。源页面是用C#编写的.ASPX。通过使用其URL(例如http://www.mysite.com/mypage.aspx

)下载ASPX文件来生成.HTM

现在该站点受密码保护,这些例程因HTTP 401而失败,我不知道如何克服这个问题。我们不想删除站点身份验证,因为我们不希望任何访问它。

有人能指出我如何对此进行编码,以便我们的内部例程可以访问我们需要的本地页面吗?

修改

更多细节。由于这只是一个开发站点,我在托管服务提供商的控制面板中执行了快速而脏的配置,以启用文件夹安全性。我添加了根文件夹'/',然后创建了2个用户。这很好用。当我访问该站点时,系统验证对话框中出现了提示。我输入用户名和密码,授予访问权限。

我注意到这个配置在我的root /'web站点文件夹中创建了4个文件。它们是.htaccess,.htpasswd,.htgroup和.htfolders。这个网站有很多文件夹。以这种方式配置每一个将是耗时且乏味的。因此'/'根配置。

我们的目的是阻止访问抓取工具/搜索引擎以及偶然访问主机名的访客。

此配置会导致副作用,即网站的一小部分无法再通过http://访问自己的网页而不会收到HTTP 401错误。我想做的是使用<security><ipSecurity>配置所有这些,除了我自己和网站之外的所有黑名单,但提供商没有安装所需的IP模块来执行此操作。

接收HTTP 401的C#代码是:

webrequest = (HttpWebRequest)WebRequest.Create(url);
webrequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)";
webrequest.Timeout = 600000;
resp = webrequest.GetResponse();

我也试过了:

CredentialCache credCache = new CredentialCache();
credCache.Add(new Uri(url), "Basic", new NetworkCredential("username", "password"));
webrequest = (HttpWebRequest)WebRequest.Create(url);
webrequest.Credentials = credCache;
webrequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)";
webrequest.Timeout = 600000;
resp = webrequest.GetResponse();

两种方法都接收HTTP 401 Unauthorized。我真的不想在C#代码中修复此问题,因为实时站点上不存在此安全问题。我更愿意在web.config和/或.ht *文件中执行此配置(如果需要)。

所以,我想知道,有什么我可以放在web.config中有帮助吗?有没有人看到这个设置方式的问题? (除了它没有工作!:P)

1 个答案:

答案 0 :(得分:1)

如果您需要,可以按如下方式删除一页的身份验证。

<location path="mypage.aspx">
    <system.web>
        <authorization>
            <allow users="*"/>
        </authorization>
    </system.web>
</location>