2009-09-13 177 views
1

我正在使用VSTS 2008 + C#+ .Net 3.5 + IIS 7.0 + ASP.Net。我有两个IIS网站,站点A和站点B.当用户请求url http://sitea/abc.aspx时,我的ASP.Net代码处理程序将验证用户(使用Forms身份验证),并且如果通过身份验证,我将把用户重定向到http://siteb/bcd.aspxIIS http请求身份验证问题

我目前的问题是,有些用户会直接访问http://siteb/bcd.aspx来跳过sitea的认证过程。这不是我想要的,因为我想确保所有访问http://siteb/bcd.aspx的用户都已通过身份验证。

我的问题是,什么是简单的解决方案来解决这个问题,当用户直接访问siteb跳过验证?

回答

1

我对这个问题的想法...

  • 禁止匿名访问这两个网站
  • 由于您使用窗体身份验证设置适当的loginurl。
  • 如果用户直接访问http://sitseb/bcd.aspx,由于匿名访问被禁止,它将被重定向到相应的登录URL。

如果您需要进一步的说明,请告诉我。

类似的解决方案在这里提出..

Multiple site authentication with asp.net

注意:如果需要的话,窗体身份验证Cookie域应设置为“* .yourdomain.com”,使相同的cookie可以用于这两个网站。

+0

谢谢Rajesh,我认为你的解决方案有效。我说我正在使用Forms身份验证,更确切地说,我使用Forms身份验证而不是siteb,抱歉我的问题描述不正确。 :-) siteb是一个遗留系统,我希望尽可能保持代码更改。我不确定在siteb上使用Forms身份验证是否会涉及太多的代码更改? – George2 2009-09-13 15:23:43

+1

“siteb”使用什么样的身份验证? – 2009-09-13 15:28:22

+0

目前,siteb尚未使用身份验证。匿名访问。 – George2 2009-09-13 15:35:10

1

在siteb上,您可以限制访问sitea的ip地址。

在IIS管理器

单击目录安全性或文件安全性选项卡,然后执行下列操作之一:

在IP地址和域名限制部分

,单击编辑。

单击授予访问权限或拒绝访问权限。当您选择“拒绝访问”时,您拒绝访问所有计算机和域,除非您专门授予访问权限。当您选择“授予访问权限”时,您授予对所有计算机和域的访问权限,但那些您明确拒绝访问的权限除外。

单击添加,然后单击单个计算机。

单击“DNS查找”按名称搜索计算机或域,而不是按IP地址搜索。

键入计算机的DNS名称。 IIS在当前域上搜索该计算机,如果找到,则在IP地址框中输入其IP地址。

+1

嗨,彼得,我认为你的解决方案不适合我。由于当一个正常的用户访问sitea进行身份验证时,我会将用户重定向到siteb。我认为IP地址应该是客户端(最终用户)的计算机地址,而不是站点地址。因此,限制siteb地址只允许sitea访问的解决方案不起作用。如果我错了,请纠正我。谢谢! – George2 2009-09-13 15:26:00

+1

这将如何工作,但随后对siteB的请求?通过身份验证的第一个请求将作为重定向来自siteA,但后续请求将来自客户端的IP,不是吗? – eidylon 2009-09-13 15:27:59

+0

嗨,彼得,场景是,步骤1:用户访问sitea的内容列表,步骤2:用户被要求通过sitea认证,步骤3:用户通过sitea认证,sitea将用户重定向到siteb,步骤4:用户访问siteb从重定向。所以,我认为当用户通过身份验证并访问siteb时,用户应该使用客户端计算机的IP地址,而不是sitea的地址,对吗? – George2 2009-09-13 15:37:13