如何保护已经使用Forms身份验证的ASP .NET网站?

时间:2011-04-12 15:13:49

标签: asp.net iis authentication

我有一个ASP .NET网站,它使用Forms身份验证来保护网站的某些部分。我们在服务器上有一个测试版本的网站,并通过网络向合作伙伴提供,例如在test.mydomain.com。

我需要保护网站的所有部分,以便只有我们的合作伙伴才能使用它。理想情况下,当他们第一次访问网站时弹出基本身份验证会很好,然后让它在正常情况下正常工作,即为某些区域形成身份验证。

然而,似乎ASP .NET和IIS不支持这一点。我知道MADAM,但实现了与我需要的略有不同的东西。

我正在考虑通过IP限制访问,但这有两个缺点,一个是要求合作伙伴“注册”他们的IP,两个,他们的IP可能会改变。

有没有人有任何建议?

4 个答案:

答案 0 :(得分:0)

一种解决方案是检查每个请求是否存在“基本身份验证”cookie。如果它不存在或没有有效数据,请不要允许访问该站点。这可以在所有页面继承的基页中检查,也可以在母版页等中进行检查。

要设置Cookie,您可以创建将合作伙伴发送到的页面。它可能只是一个不起眼的网址,或者要求他们输入密码。基本上什么安全机制适合你,但一旦他们“通过测试”,你设置cookie,让他们访问该网站。

然后他们就可以访问并能够使用您现有的表单身份验证登录。

这是否有意义。

答案 1 :(得分:0)

假设您的网站实现了角色,您可以使用传统的表单身份验证和位置属性来阻止访问。类似的东西:

<configuration>
 <location path="Testing">
  <system.web>
     <authorization>
        <allow roles="partners" />
        <deny users="*" />
     </authorization>
  </system.web>
 </location>
</configuration>

然后,您需要确保需要访问该网站该部分的所有用户都是合作伙伴角色。

答案 2 :(得分:0)

...嗯

嗯,上述解决方案可行,但总的来说还有更好的方法。但确实需要提前规划。

  1. 您的开发和登台服务器不应向公众开放,搜索机器人等等...
  2. 您的dev和stg框可以通过IIS
  3. 锁定购买防火墙甚至ip访问控制

    无代码解决方案

答案 3 :(得分:0)

最后,我们决定通过Forms身份验证保护整个网站,并向我们的合作伙伴发布测试帐户,这是最佳解决方案。

感谢大家的建议。