使用ASP.NET表单身份验证进行IP检查

2 asp.net forms-authentication

我正在asp.net网站上实现简单身份验证。使用基本的表单身份验证几乎是完美的:我将auth模式设置为Forms,并在web.config中有一个简短的凭据部分,并使用一个简单的Login aspx页面,该页面使用FormsAuthentication.Authenticate()和FormsAuthentication.RedirectFromLoginPage()。

但是,我想为某些客户端IP地址添加其他检查。如果请求来自某个IP地址,我想自动授权该请求,而不是将该请求重定向到“登录”页面。有没有简单的方法来扩展或覆盖内置表单AuthenticateRequest?我的另一个选择是创建自己的HttpModule来执行此操作,但是,如果我这样做,似乎会丢失FormsAuthentication方法的良好功能以及它们与凭据部分的交互。有什么建议么?

Mar*_*ham 5

首先,您确定要执行此操作吗?如果有人可以猜测您未验证的IP地址范围,则IP欺骗将是攻击您的站点的理想方法!即使他们只是知道地址范围,这也使得暴力攻击变得微不足道。

其次,您可以只检查登录页面中的IP地址并从那里进行重定向...不需要HttpModule。但是,再次,如果我是你,我不会这样做。

更新: RG-几件事。我的想法是,您将在重定向之前进行Authenticate()调用。这样可以避免重定向环回。但是看起来您甚至不需要它,因为...

其次,从下面的评论(在Ben的帖子中),您将在Web Service中使用此代码。如果是这样,您是否不能将Web服务作为允许的访问页面放在Web.Config页面中?只需添加:

<location path="YourWebService.asmx">
  <system.web>
    <authorization>
      <allow users="*" />
    </authorization>
  </system.web>
</location>
Run Code Online (Sandbox Code Playgroud)

尽管我们确实要求我们的Web服务用户在处理Web服务请求(它也经过SSL加密)之前先发送一个“魔术短语”,但这仍是我们的工作。